いまさらC/C++の学習


Windows環境でC/C++について勉強していく。

環境:Windows10 +Visual Studio Community2019

1. Visual Studio設定

1-1.SDLチェックの無効化

無効化しない方が良いが、とりあえず昔のソースを使用したい場合などのために。
sanfなどでエラーになった場合の暫定対応。

プロジェクトのプロパティで、[C/C++]-[全般]-[SDLチェック]の値を「はい(/sdl)」から「いいえ(/sdl-)」に変更する。

2.コード

2-1. 変数とポインタの基本

変数 ポインタ
宣言 int a = 1; int *b = NULL;
アドレスの確認 &a; b;
a; *b;

3.Tool

3-1.Google Test

3-1-1.困ったこと

■ヘッダファイルが見つからない
テスト用プロジェクトのプロパティで、「VC++ディレクトリ」のインクルードディレクトリで、
自身のディレクトリから1階層上に上がり、対象プロジェクトを指定する。

3-2.log4cpp

3-2-1.困ったこと

■コンパイルに失敗した
以下を参考に、とりあえず、log4cppのプロジェクトを右クリックし、
プロパティ⇒C/C++⇒プリプロセッサにある
プリプロセッサの定義にHAVE_SNPRINTFを追加したらdllが出来た。
http://piyolog6.blogspot.com/2016/08/vclog4cpp.html

■プロジェクトから使えない

4-3.spdlog

4-3-1.インストール

ヘッダーファイルを取ってきて、プロジェクト直下に「spdlog」ファイルを配置。
プロジェクトのプロパティで[c/C++]-[全般]にある「追加のインクルードディレクトリ」で【$(ProjectDir)】を指定する。

4-3-2.ソース

main.cpp
#include <iostream>
#include "spdlog/spdlog.h"

#include "spdlog/sinks/basic_file_sink.h"
#include "spdlog/logger.h"

int main()
{
    std::cout << "Hello World!\n";
    auto file_logger = spdlog::basic_logger_mt("basic_logger", "basic.txt");
    file_logger->info("hello!");
    // デフォルトのLoggerに登録
    spdlog::set_default_logger(file_logger);
    spdlog::info("Some info Log here!!!");
}

4.自分の規約

チーム開発するときの規約を考える。

4-1. プロジェクト開始前

4-1-1.ソリューションとプロジェクトは分ける

ソリューションファイルとプロジェクトファイルの場所は分ける。

×ダメな例

〇良い例

ソリューションを作成した後に自動的に作られる同名のプロジェクトを削除して、
ソリューションフォルダの下に、自分でプロジェクトを追加する。
なるべく階層構造にしていく。
なおプロジェクトを削除してもプロジェクトファイルは自動で削除されない模様。

4-2.コーディングルール

4-2-1.コメント

メソッドに対して、「///」コメントを作成する。

4-3.テストのルール

4-3-1.テストファイル名

テスト対象クラス+Test+(OK or NG)とする。

例)「Format.cpp」のテストを行う場合は、「FormatTestOK」と{FormatTestNG」を作成する。