C++ ⇒ VBA 書いて覚えるための初心者自己中記事

C++ ⇒ VBA 勉強の履歴を付けるというかノート代わりに使ってます

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);

最終的な展開場所のデータになる。

 

ここまで。