2016-07-04 73 views
1

我如何到L添加前綴宏

#define STRING "string" 

我要到L添加前綴字符串宏後來在我的代碼(我不能做到這一點的定義)。怎麼做?

+0

的文本替換宏的作品,是一個編譯時機制。您無法在運行時隨時隨地更改它。 –

+0

你知道。也許它不是重複的。你是什​​麼意思**完全**由*「添加L前綴」*? – StoryTeller

回答

4

這應該這樣做:

#include <stdio.h> 


#define CONCATENATE(e1, e2) e1 ## e2 
#define PREFIX_L(s) CONCATENATE(L, s) 

#define STRING "string" 

int main(void) 
{ 
    printf("%ls\n", PREFIX_L(STRING)); 
} 

這些標準的C預處理器的級聯能力也涵蓋與GCC未來的文檔:https://gcc.gnu.org/onlinedocs/cpp/Concatenation.html

+1

這不是一個gcc功能,而是標準功能。 – Olaf

+0

@Olaf:我知道,但是該頁面指的是GCC文檔...:} – alk

+0

@Olaf:你沒有因此而倒下,是嗎? | - ) – alk

-1

這應該工作。

#define STRING(x) x"string" 

char * l_pString = STRING(""); 
wchar_t * l_pWideString = STRING(L); 
+0

這是不正確的。 http://ideone.com/xIn2Br 您不能忽略宏參數。 – StoryTeller

+0

加入@StoryTeller只是在第一種情況下通過'「」'。 – alk