0

私が書いた共有オブジェクトのヘッダーファイルに、次のようなDEBUG_PRINTマクロが定義されています。

lib_mylib.h:

#ifdef DEBUG
#define DEBUG_TEST 1
#else
#define DEBUG_TEST 0
#endif

#define DEBUG_PRINT(fmt, args...) \
        do { if (DEBUG_TEST) fprintf(stderr, "%s:%d:%s(): " fmt, \
                __FILE__, __LINE__, __FUNCTION__, ##args); } while (0)

このライブラリを使用するacファイルから設定しました

#DEFINE DEBUG 1

これにより、共有オブジェクト内で呼び出された場所でDEBUG_PRINTステートメントが正常に使用されます。ただし、cファイルでステートメントを使用すると、コンパイルされますが実行されません-これはなぜですか?

4

1 に答える 1

0

プリプロセッサは厳密にシーケンシャルであり、マクロを使用またはチェックする前にマクロを定義する必要があります。

于 2012-12-06T10:10:34.020 に答える