#pragma message("this is message") #pragma message只能打印字符串,如果想打印任何宏定義可使用: #define PRINT_MACRO_HELPER(x) #x #define PRINT_MACRO(x) #x ...
背景 總所周知,代碼量稍微大一點的C C 項目的一些宏定義都會比較復雜,有時候會嵌套多個 if else判斷分支和一堆 ifdef undef讓你單看代碼的話很難判斷出宏定義的具體內容。 如果有一種機制能夠幫助我們在構建期間打印出宏的實際內容,就能幫我們更快地捋清楚代碼邏輯。 message pragma 如message pragma定義所說,可以使用它來打印一個字面意義的字符串: 而我們知道宏 ...
2020-12-20 17:12 0 935 推薦指數:
#pragma message("this is message") #pragma message只能打印字符串,如果想打印任何宏定義可使用: #define PRINT_MACRO_HELPER(x) #x #define PRINT_MACRO(x) #x ...
Linux下的GCC編譯器內部預宏定義 經常在一些開源的程序中看到一些宏定義,卻看不到這些宏定義是在哪些地方定義的,其實有些宏定義是交叉編譯工具GCC預定義好的,比如:__GNUC__,__ELF__等等,怎么看到這些宏定義呢,可以采用以下命令來查看: gcc -E -dM ...
編譯調試代碼時,總是遇到要使用編譯器預編譯宏進行跨平台編譯. gcc -E -dM -</dev/null 編譯器版本 Thread model: posix gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.11) 結果 ...
開發過程中我們常常需要使用宏定義。。 為了盡可能多的使用GCC為我們提供的特性,首先我們需要知道gcc提供了那些特性。。。 gcc -dM -E - < /dev/null 沒錯,就這么一句話就可以搞定了。。。 ...
示例代碼(文件compile_macro_test.c): #include <stdio.h> int main(){ int a = 0;#ifdef ...
目錄 1 預處理階段:預處理器(cpp) 2 編譯階段:編譯器(ccl) 3 匯編階段:匯編器(as) 4 鏈接階段:鏈接器(ld) hello.c 1 預處理階段:預處理器(cpp) 2 編譯階段:編譯器(ccl) 3 匯編階段 ...
今天在看Linux系統編程這本書的代碼的時候看到了__GNUC__,不太清楚這個宏所以去查了一下,以此記錄。GNU C預定義了一系列的宏,這些宏都是以雙下划線開始的,這里只講一下__GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__,其他GNU C的預定義宏 ...
下面是對Gcc的內置宏定義的解釋: https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html https://github.com/gcc-mirror/gcc/blob/master/gcc/config ...