關於C 巨集定義問題,關於C 巨集定義避免多次包含的問題,如何解決?

2021-08-25 12:10:31 字數 2307 閱讀 1458

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語言中巨集是什麼意思?

巨集定義是高階語言編譯器提供的常用語法,其目的是利用某一識別符號標識某個文字字串。在編寫程式時,如果程式中反覆地使用某個資料或某段程式片段,就可以考慮將這個資料或程式片段定義為巨集,然後每個出現該資料或程式片段的地方用巨集名替代,這樣做的好處是程式簡潔,可讀性好,而且當需要修改這些相同的程式片段時,...