4
我試圖重構一段遺留代碼,並且想要在源中的某個點定義的所有宏的快照。代碼導入了一些荒謬的頭文件等,手工跟蹤它們有點乏味。打印所有已定義的宏
喜歡的東西
#define FOO 1
int myFunc(...) {
PRINT_ALL_DEFINED_THINGS(stderr)
/* ... */
}
輸出某處預計
MACRO: "FOO" value 1
我用gcc,但有機會獲得其他的編譯器,如果他們更容易來完成這個任務。
編輯:
鏈接的問題不給我正確的輸出是:
#include <stdio.h>
#define FOO 1
int main(void) {
printf("%d\n", FOO);
}
#define FOO 0
這非常清楚地打印1
運行時,但gcc test.c -E -dM | grep FOO
給我0
你可以從編譯器中完成。我前幾天做過。 h/o我會看看我做了什麼 –
據我所知,這樣的事情既不存在也不容易實現,因爲宏在C編譯器之前被評估。 – usr1234567
@SteveCox您也可以自己定義自己定義的東西。我甚至在關閉之前測試過重複。 – Lundin