原文:C/C++典型錯誤:宏中使用函數

define min a,b a lt b a : b define max a,b a gt b a : b 我常常會用這兩個宏,一般來說,宏比函數更高效,但是如果里面元素是函數的話,就不是這樣。因為宏只是在編譯預處理階段執行簡單替換,如果你有兩個函數f和g,代碼中寫了min f a ,g a ,那么就會被展開為 f a lt g a f a : g a ,這是 次調用,而不是想象中的先算f ...

2013-01-07 14:54 0 3859 推薦指數:

查看詳情

[c++] 用定義一個函數

要點:變量都用括號括起來,防止出錯,結尾不需要;。在實際編程中,不推薦把復雜的函數使用,不容易調試。多行用\ 要寫好C語言,漂亮的定義是非常重要的。定義可以幫助我們防止出錯,提高代碼的可移植性和可讀性等。 在軟件開發過程中,經常有一些常用或者通用的功能或者代碼段,這些功能既可以寫成函數 ...

Tue Dec 05 00:52:00 CST 2017 0 4590
C/C++、內聯函數和普通函數的區別

內聯函數的執行過程與帶參數定義很相似,但參數的處理不同。帶參數的定義並不對參數進行運算,而是直接替換;內聯函數首先是函數,這就意味着函數的很多性質都適用於內聯函數,即內聯函數先把參數表達式進行運算求值,然后把表達式的值傳遞給形式參數。 內聯函數與帶參數定義的另一個區別是,內聯函數 ...

Thu Aug 13 18:46:00 CST 2015 0 6762
C++ macro(使用小結

  談起C++中的,我們第一個想到的應該就是“#define”,它的基本語法長得像這樣:   的聲明和普通的函數聲明很像,但是兩者之間有本質的區別:C++函數在運行時(runtime)才執行代碼段;而則是在預編譯時期(preprocessor)執行代碼段。下面簡單介紹一下幾個 ...

Mon Apr 04 08:49:00 CST 2016 0 2292
c++使用總結【轉】

  C/C++總結C程序的源代碼中可包括各種編譯指令,這些指令稱為預處理命令。雖然它們實際上不是C語言的一部分,但卻擴展了C程序設計的環境。   ANSI標准定義的C語言預處理程序包括下列命令:      #define,#error,#include,#if,#else,#elif ...

Tue May 17 12:41:00 CST 2016 0 4210
C++ 定義#define 中##的使用

C++定義中,符號##一般是用於連接,包括參數的連接,參數與標識符的連接等,然后形成一個新的標識符。 下面舉幾個例子來進行說明。 eg1: 或者不用#define ab "123456",直接在main函數中定義一個string ab ...

Wed Jul 05 17:59:00 CST 2017 0 8910
C++定義

C++ 定義將一個標識符定義為一個字符串,源程序中的該標識符均以指定的字符串來代替。預處理命令不同於一般C++語句。因此預處理命令后通常不加分號。這並不是說所有的預處理命令后都不能有分號出現。由於定義只是用名對一個字符串進行簡單的替換,因此如果在定義命令后加了分號,將會連同分號一起進行置換 ...

Sun Nov 18 18:18:00 CST 2012 1 4068
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM