1樓:匿名使用者
c++ 巨集定義將一個識別符號定義為一個字串,源程式中的該識別符號均以指定的字串來代替。前面已經說過,預處理命令不同於一般c++語句。因此預處理命令後通常不加分號。
這並不是說所有的預處理命令後都不能有分號出現。由於巨集定義只是用巨集名對一個字串進行簡單的替換,因此如果在巨集定義命令後加了分號,將會連同分號一起進行置換。
定義帶引數的巨集時,巨集體中與引數名相同的字串適當地加上圓括號是十分重要的,這樣能夠避免
可能產生的錯誤。例如,對於巨集定義:
#define sq(x) x*x
當程式中出現下列語句:
m=sq(a+b);
替換結果為:
m=a+b*a+b;
這可能不是我們期望的結果,如果需要下面的替換結果:
m=(a+b)*(a+b);
應將巨集定義修改為:
#define sq(x) (x)*(x)對於帶參的巨集定義置換的方法是:在程式中如果有帶實參的巨集(如"sub(2,3)"),則按"#define"命令列中指定的字串從左到右進行置換。如果串中包含巨集中的形參(如a、b),則將程式語句中相應的實參(可以是常量、變數或者表示式)代替形參,如果巨集定義中的字串中的字元不是引數字元(如a-b中的-號),則保留。
這樣就形成了置換的字串。
2樓:黃邦勇帥哥哥
#define macro_
改為#define macro_ "exit"
下面這個地方真的讓偶百思不得其解了
#define macro_ << cin
你到底要把macro_定義為什麼東東啊,如果把macro_定義為int這樣的內建型別,則中間的一堆語句可以解釋,那麼s=macro_又何解?如果想把macro定義為一個常量,那麼s=macro_以上的語句又何解啊。真是高人啊
那這樣改就行了
#define macro_ << cin
改為#define macro_ cin>>
下面一句也要改
macro_ macro_maxvalue = numeric_limits::max();
需要改為兩條語句,如下
macro_maxvalue = numeric_limits::max();
macro_ macro_maxvalue; //注意macro_後面有一個空格
同理macro_ macro_minvalue = numeric_limits::min();
也要改為兩條語句
macro_minvalue = numeric_limits::min();
macro_ macro_minvalue ;
彼人對你的macro_minvalue = numeric_limits::min();這條語句還是不夠理解,如果這條語句表示使用=後面的東東去初始化macro_minvalue的話,則上面的修改方示就沒有錯。如果是其他用途,那就不好整了
記住一條簡單規則就行:#define是簡單的替換,比如
#define macro_ cin>>
那麼語句macro_ macro_minvalue ;會被替換為
cin>> macro_minvalue;
因此其意思就是輸入macro_minvalue的值。
3樓:匿名使用者
很簡單你先把完整的**寫出來
然後再把需要定義為巨集的**位置處做個標記 並把該**刪除
然後再定義你的巨集 然後再把所有的標記換成你的巨集明 就萬無一失了
4樓:匿名使用者
樓上的都說的挺好的
巨集是用來定義常量的
比如: #define pi 3.14
5樓:陰鈺
同意樓上,用c++就儘量不用巨集,這是優秀的程式設計習慣
6樓:孟羽然
#define macro_
這裡定義了一個空的巨集
while ( macro_ != "exit") {這裡經過巨集替換之後就會變成:
while ( != "exit") {
顯然會編譯不通過。
你定義該巨集的目的是什麼?要實現什麼機能?
關於c++巨集定義避免多次包含的問題,如何解決?
7樓:手機使用者
首先,這些巨集bai
定義不是在cpp檔案中du,而是在頭文zhi件中的。dao還知道,頭專檔案一般是用來聲屬明的,會被其他的原始檔和標頭檔案include,當被多個檔案include的時候就會造成重複宣告。為了使得只宣告一次,引入問題中所說的巨集定義,一般以檔名大寫和_來當巨集的名字。
c語言的巨集定義 if ,c語言的巨集定義 if defined
說的簡單一點就是一個判斷語句,判斷 if defined ifndef 後面的語句是否有 沒有 被巨集定義過,如果條件為真就執行其間的語句,否則就不管它。沒有說得那麼繁瑣.因為對於一個大程式而言,我們可能要定義很多常量 不管是放在原始檔還是標頭檔案 那麼我們有時考慮定義某個常量時,我們就必須返回檢查...
解釋下C語言巨集定義的一道題,C語言的巨集定義問題
這裡主要是兩個語法。一是在define語句裡,x 的意思是,替換為一個以x為內容的字元專串。比如 如果 屬你呼叫 print 10 那麼 x 就等於是寫 10 這樣的。第二個語法是,在c語言裡,連續寫兩個字串 不需要任何操作符連結 就等於把它們連線起來。比如 the no.is 就跟寫 the no...
在C語言學習中什麼叫巨集定義,在C語言中巨集是什麼意思?
巨集定義是高階語言編譯器提供的常用語法,其目的是利用某一識別符號標識某個文字字串。在編寫程式時,如果程式中反覆地使用某個資料或某段程式片段,就可以考慮將這個資料或程式片段定義為巨集,然後每個出現該資料或程式片段的地方用巨集名替代,這樣做的好處是程式簡潔,可讀性好,而且當需要修改這些相同的程式片段時,...