2017-05-19 35 views
1

我在makefile.init定義一些變量:Lintering警告,而編譯好的

MY_VARIABLE = some_value 

在預處理器設置我有這樣的-D開關:

-DUSE_MY_VAR=\"$(MY_VARIABLE)\" 

而且在源文件中,我有這個:

static const char* my_val = USE_MY_VAR; 

所以這個my_val將得到在makefile.init文件中設置的值。

它編譯得很好,但索引器抱怨警告「遇到錯誤的字符序列:\」。有沒有辦法讓它理解它,或者讓它忽略這個特定的變量?

回答

2

好吧終於找到的東西,使雙方的編譯器和索引高興:

我-D開關變(去除轉義引號):

-DUSE_MY_VAR=$(MY_VARIABLE) 

,並在源代碼(感謝Expand macro inside string literal):

#define STRINGIFY2(X) #X 
#define STRINGIFY(X) STRINGIFY2(X) 

static const char* my_val = STRINGIFY(USE_MY_VAR);