1. 程式人生 > >使用巨集定義應注意的問題

使用巨集定義應注意的問題

一,自定義一個標準巨集MIN

#define MIN(A, B) ((A) <= (B) ? (A) : (B))

要注意的問題

1,要將定義中的引數與整個巨集用括號括起來。

2,巨集定義可以實現類似函式的功能,但它終歸不是函式,而巨集定義括號中的"引數"也不是真正的引數,在巨集展開時對引數進行的是文字替換。

相關推薦

使用巨集定義注意的問題

一,自定義一個標準巨集MIN #define MIN(A, B) ((A) <= (B) ? (A) : (B)) 要注意的問題 1,要將定義中的引數與整個巨集用括號括起來。 2,巨集定義可以實

iOS開發巨集定義(#define)注意

在開發中常用#define來記錄各種數值,一般情況下是沒有問題的,但是當巨集中有加減運算,並被用於乘除等運算中時計算的數值就可能不準確。 舉例 #define kItemWith self.bounds.size.height - 10 這裡定義了一個item的長度,正常情

C/C++常用巨集定義注意事項,巨集中#和##的用法

總結下巨集和函式的不同之處,以供大家寫程式碼時使用,這段總結摘自《C和指標》一書。 當然巨集定義非常重要的,它可以幫助我們防止出錯,提高程式碼的可移植性和可讀性等。 下面列舉一些成熟軟體中常用得巨集定義 1,防止一個頭檔案被重複包含 #ifndef COMDEF_H 

C++中巨集定義的使用注意事項

1 簡介 巨集定義是C語言的三種預處理功能之一,另外兩種預處理是檔案包含和條件編譯。 1.1 格式 巨集定義的格式分為不帶引數和帶引數兩種。 不帶引數的格式為 #define 巨集名 字串 帶引數的格式為 #define 巨集名(引數表) 字串 1.2 使用 巨集展開是在預

lua裡實現類似巨集定義,動態生成程式碼

其實就是用了  lua 的 loadstring 功能。 1.把需要動態生成的程式碼拼接成為一個字串。 str 2. loadstring(str)   這個只是解析了程式碼,相當於一個function   需要 執行一下才會生效

個人簡歷製作過程中注意的地方

簡歷作為一個人求職面試的工具,需要大家好好準備,注意其中的問題,才能製作出一份毫無缺陷的精美簡歷。今天小編就將告訴大家個人簡歷製作當中的禁忌,讓大家在今後製作簡歷時,少犯這些錯誤。1.內容不要重複、過多有得人為了讓簡歷看上去內容豐富,就將一個方面的小內容,不斷在簡歷中重複提出,導致簡歷內容十分混亂,讓人看上去

c語言巨集定義#define

1. 利用define來定義 數值巨集常量     #define 巨集定義是個演技非常高超的替身演員,但也會經常耍大牌的,所以我們用它要慎之又慎。它可以出現在程式碼的任何地方,從本行巨集定義開始,以後的程式碼就就都認識這個巨集了;也可以把任何東西定義成巨集。因為編譯器會在預編譯的時候用真身替換

group_concat使用注意的問題

group_concat的預設分隔符是“,”,若要改為其他分隔符,則使用SEPARATOR來指定, 例如: mysql> SELECT student_id, GROUP_CONCAT(courses_id SEPARATOR '@#$') AS courses FROM student_co

C語言開關巨集定義的學習##__VA_ARGS__

最近寫c程式,學到一種開關巨集,極大提高程式的控制性: #define __DEBUG #ifdef __DEBUG #define tnfs_print(format, ...) printf (format, ##__VA_ARGS__) #else #define tnfs_print

cocos2dx 常用函式和巨集定義

最近我們的cocos2d-x遊戲專案已經進入了正式開發的階段了,幾個dev都辛苦碼 程式碼。cocos2d-x還是一套比較方便的api的,什麼action啊、director啊、ccpoint啊都蠻便捷的。但是我看到幾個dev有時 候會很不知道用它們,還是首先自己去寫函式…… 用一些比較原始

巨集定義的用法

有五種用法,含有引數和不含引數,行尾都不用加分號 #define   <識別符號>  [<替換列表>] //類似於全域性變量了 //如果其他檔案沒有包含定義巨集的檔案,則在巨集定義的位置結束,如果有包含,則到包含的檔案結束 #de

行內函數,巨集定義,記憶體對齊,型別轉換

巨集 與 inline的區別 存在的價值,兩者都是文字替換,降低程式跳轉次數,提高效率 1. define 是預處理命令,無法除錯 ,最簡單文字替換,     inline 是編譯期替換,可以除錯, 存在引數型別檢查 2. 使用inline的時候,函式必須定義   直接定義的函式

mysql中的保留關鍵字,設計資料庫時注意

設計資料庫時儘量不要用系統保留關鍵字,如果非要用,記得用``包裹,如:`desc` Mysq官方文件地址   http://dev.mysql.com/doc/refman/5.7/en/keywords.html MySQL 5.7 AC

C/C++中標準巨集定義及其用法

ANSI C標準中有幾個標準預定義巨集 __func__:在原始碼中插入當前所在函式名; __LINE__:在原始碼中插入當前原始碼行號; __FILE__:在原始檔中插入當前原始檔名; __DATE__:在原始檔中插入當前的編譯日期 __TIME__:在原始檔

Lombok用於繼承時注意的點

lombok專案的產生就是為了省去我們手動建立getter和setter等基本方法的麻煩,它能夠在我們編譯原始碼的時候自動幫我們生成getter和setter等方法。即它最終能夠達到的效果是:在原始碼中沒有getter和setter方法,但是在編譯生成的位元組碼檔案中有getter和setter方法

除錯技巧:封裝printf列印除錯資訊和巨集定義開關

/* #define DEBUG */ #ifdef DEBUG #define DEBUG_ERR(format, ...) \ do{ \ printf("\r\n"); \ printf("FILE: "__FILE__", LINE: %

Redis 設定 Key/value 的規則定義注意事項(附工具類)

對於redis的儲存key/value鍵值對,經過多次踩坑之後,我們總結了一套規則;這篇文章主要講解定義key/value鍵值對時的定義規則和注意事項。 前面一篇文章講了如何定義Redis的客戶端和Dubbo整合儲存器;當我們真正開始開發的時候,就會突然發現,有點不知道如何去定義Redis的K

內網環境部署kubernetes注意的問題

部署思路是:master機器可以訪問公網,其它機器都在內網,因此master機器有兩張網絡卡,其它機器與master機器的內網網絡卡相聯。   一、網路配置 master節點的網路配置 # 機器 k8s-master, 此臺機器除了作為 master 本身,還承擔閘道器的功能 # 訪問

巨集定義一些用法

一:引數名必須保持一致: #define Fun(a,b) f(a,b) Fun(1,2) ===>f(1,2) #define Fun(a,b) f(a1,b2) Fun(1,2) ==>f(a1,b2) 二:##一些注意事項 #define SIGN(x) INT_x SIGN(3)

如何通過 讀取配置引數 而不是 預編譯 巨集定義方式 來決定是否執行printf函式

在一個專案中,本來開始決定通過巨集定義方式來決定是否進行 printf 列印除錯資訊的,但後面考慮到使用配置引數的方式應該更好,因為通過巨集定義方式,還需要再編譯一遍程式才能進行顯示,而通過讀取配置引數方式,只需要在配置檔案中更改配置項即可,這樣更符合實際需要。  大致思路:先將需要列