C++ 組み込みマクロ 書いて覚えるための初心者自己中記事
いままでマクロは #define で定義していた。
組み込みマクロといって標準の定義済みマクロなるものがある。
cout << __FILE__ << endl;//ファイル名 cout << __LINE__ << endl;//行番号 cout << __DATE__ << endl;//コンパイルした日 cout << __TIME__ << endl;//コンパイルした時間 cout << __cplusplus << endl;//C++のコンパイラでコンパイルされた場合に定義される //cout << __STDC__ << endl;//??よくわからない。まだ早い
//output
c:\users\---\source\repos\project2\project2\source.cpp
13
Sep 27 2017
11:36:29
199711
これらのマクロは別に定義したマクロ内に記述した場合
その記述が別ファイルだったとして
別ファイルでマクロが展開される。
マクロを呼び出した側での情報を出してくれる。
Assert.h
#ifdef NDEBUG #define ASSERT(b) #else #define ASSERT(b) Debug::Assert((b), __FILE__, __LINE__) namespace Debug { void Assert(bool b, const char* file, int line); } #endif NDEBUG
Assert.cpp
#ifdef NDEBUG #else #include <iostream> #include <cstdlib> using namespace std; namespace Debug { void Assert(bool b, const char* file, int Line) { if (b) { // } else { cerr << file << Line << endl; //exit(EXIT_FAILURE); } } } #endif
main.cpp
ASSERT(true); ASSERT(false);
最終的な展開場所のデータになる。
ここまで。