我有一個C++實現文件(my.cpp)間接包括頭部文件(BH),其限定_MAX_DRIVE:C++宏重定義的範圍是什麼?
// b.h
#define _MAX_DRIVE 64
然後my.cpp包括stdlib.h中,其也限定_MAX_DRIVE
// stdlib.h
#define _MAX_DRIVE 3 /* max. length of drive component */
顯然,這會產生宏觀的重新定義警告:
stdlib.h(185) : warning C4005: '_MAX_DRIVE' : macro redefinition
我的問題是:
- 這個重定義會影響多少代碼,它只是my.cpp的編譯單元?
- 如果my.cpp是靜態庫的一部分,重新定義的值是否會進入其他代碼?
- 如果我甚至從未在my.cpp中引用_MAX_DRIVE,是否可以安全地告訴編譯器忽略此宏重新定義警告?
編譯器保留以下劃線開頭並帶有大寫字母(例如'_MAX_DRIVE')的標識符。不要在你自己的頭文件中使用它們! –
感謝@Adam,很高興知道。我正在處理那些不會改變的遺留代碼,所以我只需要處理它。 – Matthew