開發過程中我們常常需要使用宏定義。。 為了盡可能多的使用GCC為我們提供的特性,首先我們需要知道gcc提供了那些特性。。。 gcc -dM -E - < /dev/null 沒錯,就這么一句話就可以搞定了。。。 ...
查看gcc默認的內置宏定義 或者 helloworld.c為用戶隨意編寫的c測試用例,隨意拿個c程序就行。 E 預處理后即停止,不進行編譯。預處理后的代碼送往標准輸出。GCC忽略任何不需要預處理的輸入文件。 dM 告訴預處理器輸出有效的宏定義列表 預處理結束時仍然有效的宏定義 。該選項需結合 E 選項使用。 打開用戶自行設置的宏定義 helloworld.c文件中的宏定義DEBUG如下: 總結: ...
2021-05-11 10:21 0 1290 推薦指數:
開發過程中我們常常需要使用宏定義。。 為了盡可能多的使用GCC為我們提供的特性,首先我們需要知道gcc提供了那些特性。。。 gcc -dM -E - < /dev/null 沒錯,就這么一句話就可以搞定了。。。 ...
Linux下的GCC編譯器內部預宏定義 經常在一些開源的程序中看到一些宏定義,卻看不到這些宏定義是在哪些地方定義的,其實有些宏定義是交叉編譯工具GCC預定義好的,比如:__GNUC__,__ELF__等等,怎么看到這些宏定義呢,可以采用以下命令來查看: gcc -E -dM ...
一. c /c++語言中使用宏的主要目的主要有 3 個: 1. 提高代碼的可讀性; 把用到的常量定義成有意義的名字; 2. 無需函數調用,運行效率高; 對於一些簡單的操作,無需調用函數,雖然編程是強調模塊化,但是函數調用時,需要保護現場和恢復現場。這些都需要耗時。對於復雜的操作 ...
背景 總所周知,代碼量稍微大一點的C/C++項目的一些宏定義都會比較復雜,有時候會嵌套多個#if/#else判斷分支和一堆#ifdef/#undef讓你單看代碼的話很難判斷出宏定義的具體內容。 如果有一種機制能夠幫助我們在構建期間打印出宏的實際內容,就能幫我們更快地捋清楚代碼邏輯 ...
今天在看Linux系統編程這本書的代碼的時候看到了__GNUC__,不太清楚這個宏所以去查了一下,以此記錄。GNU C預定義了一系列的宏,這些宏都是以雙下划線開始的,這里只講一下__GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__,其他GNU C的預定義宏 ...
宏定義是C提供的三種預處理功能的其中一種,這三種預處理包括:宏定義、文件包含、條件編譯。 1.不帶參數的宏定義: 宏定義又稱為宏代換、宏替換,簡稱“宏”。 格式: #define 標識符 字符串 其中的標識符就是所謂的符號常量,也稱為“宏名”,字符串可以是常數、表達式、格式 ...
下面是對Gcc的內置宏定義的解釋: https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html https://github.com/gcc-mirror/gcc/blob/master/gcc/config ...
gcc -dM -E - < /dev/null ...