2011-10-31 78 views

回答

16

C語言不具有#操作者,但預處理器(用於處理#include#define程序)一樣。預處理器簡單化使#ALPS成爲字符串"ALPS"

但是,此「stringify」運算符只能用於#define預處理器指令中。例如:

#define MAKE_STRING_OF_IDENTIFIER(x) #x 
char alps[] = MAKE_STRING_OF_IDENTIFIER(ALPS); 

預處理器將上面的例子中轉換成以下:

char alps[] = "ALPS"; 
+2

你的答案可能會更清楚:'#ALPS'本身會引發錯誤「無效的預處理指令」。但是,如果使用像'#define TEST(X)#X'那麼'TEST(ALPS)'將輸出'「ALPS」'。 – wormsparty

+0

這麼說'char * s =#ALPS'會有意義嗎? – Bleamer

+0

@wormsparty:謝謝,稍微澄清一下答案。 –

1

#號被用於預處理器指令,諸如#include#define。它也可以在宏定義中使用,以防止宏擴展。

1

在C中的尖銳符號是用於預處理指令的前綴。

這不是一個運營商...

0

「#」是不是C. 操作,但預處理器(編譯器運行之前)爲 能力_中包含的頭文件: enter code here的#include _宏展開:**#define foo(x) bar x** _條件編譯:

**#if DLEVEL > 5 
    #define STACK 200 
#else 
    #define STACK 50 
    #endif 
#endif** 

enum {ALPS, ANDES, HIMALYAS}; 什麼都不會返回ALPS。你剛剛定義了一個強整數類型(ALPS = 0, ANDES = 1 and HIMALYAS = 2),但是它沒有命名的用法,如下所示: enum mountain {ALPS,ANDES,HIMALYAS};