常用的預定義和預編譯
阿新 • • 發佈:2019-02-01
1)#define 的符號用法 ##連線 #define con(x,y) x##y n=con(123,456) -> n=123456 字串也是類似 #@轉字元 #define tochar(x) #@x x不超過3位 char a=tochar(1) -> a='1' #轉字串 #define tostring(x) #x char *str =tostring(12345) ->str="12345" \行繼續 代表不換行 __VA_ARGS__ 接受不定數量的引數 #define longargv(...) fprintf(stderr,__VA_ARGS__) longargv("%s:%d:","hello",10) ->fprintf(stderr,"%s:%d:","hello",10) 3)預編譯條件分析 #if 0 code #endif 類似於 /* code */ 例項: int a=0; #if 0 //為0就不編譯裡面的code a=10; #endif printf("%d\n",a); 例項2: #define BULL 0 int main() { char ch='a'; #if BULL //非0為真 ch='c'; #else ch='b'; #endif printf("%c\n",ch); return 1; } 例項3: #define BULL 0 int main() { char ch='a'; #if _BULL //如果BULL被#define定義過就為真 ch='c'; #else ch='b'; #endif printf("%c\n",ch); return 1; }