finding-c++-static-initialization-order-problems、 マクロをヘッダファイルに定義したいとします。 "check_fiasco.h"とし、このヘッダーファイルをウォーレンスティーブンスのアイデアのようにすべてのcppファイルの先頭に置きます。しかし、私は彼のコードをlinuxの下で試してみましたが、うまくいきません(コンパイルされますが、実行されるとクラッシュします)。ファイル名でマクロを定義する
私は、次のマクロを試してみました:
#define TOKENCONCAT(x, y) x ## y
#define file_init_(x, y) TOKENCONCAT(x, y)
#define FIASCO_FINDER_DEC \
void file_init_(file_, __FILE__)(void) ((constructor)) ;
#define FIASCO_FINDER_IMPL \
void file_init_(file_, __FILE__)(void) __attribute__ {\
printf("Good Morning, %s!\n", __FILE__);\
return ;\
}
しかし、これは「/」関数名に許可されていないと貼り付け、ファイル名として、動作しません。宣言と実装が同じでなければならないので、__COUNTER__
を使用することはできません。
アイデア?
これはC++の問題で、Cとは関係がありません.Cタグを削除します。 – Lundin