c語言中怎樣修改巨集定義呢,C語言中怎樣修改巨集定義呢

時間 2021-06-21 04:08:02

1樓:青山鬱

什麼意思?是在定義巨集後的程式**中改,還是在編輯巨集定義的時候該?

如果是前者,巨集定義是在預編譯時是就決定的,在程式執行時是不能改的;如果是後者,直接改就行了。

2樓:八條

比如你想定義n=5,就這樣:#define n 5

如果你想修改巨集為x=3.2,則為:#define x 3.2

看懂了嗎,希望能幫上你

3樓:xz巨集定義

#define是c語言中提供的巨集定義命令,其主要目的是為程式設計師在程式設計時提供一定的方便,並能在一定程度上提高程式的執行效率,但學生在學習時往往不能理解該命令的本質,總是在此處產生一些困惑,在程式設計時誤用該命令,使得程式的執行與預期的目的不一致,或者在讀別人寫的程式時,把執行結果理解錯誤,這對 c語言的學習很不利。

1 #define命令剖析

1.1 #define的概念

#define命令是c語言中的一個巨集定義命令,它用來將一個識別符號定義為一個字串,該識別符號被稱為巨集名,被定義的字串稱為替換文字。

該命令有兩種格式:一種是簡單的巨集定義,另一種是帶引數的巨集定義。

(1) 簡單的巨集定義:

#define 《巨集名》  《字串》

例: #define pi 3.1415926

(2) 帶引數的巨集定義

#define 《巨集名》 (《參數列》) 《巨集體》

例: #define a(x) x

一個識別符號被巨集定義後,該識別符號便是一個巨集名。這時,在程式中出現的是巨集名,在該程式被編譯前,先將巨集名用被定義的字串替換,這稱為巨集替換,替換後才進行編譯,巨集替換是簡單的替換。

1.2 巨集替換髮生的時機

為了能夠真正理解#define的作用,讓我們來了解一下對c語言源程式的處理過程。當我們在一個整合的開發環境如turbo c中將編寫好的源程式進行編譯時,實際經過了預處理、編譯、彙編和連線幾個過程,見圖1。

源程式前處理器

修改後的源程式

編譯器彙編程式

彙編器可重定位的目標程式

聯結器可執行的目標程式

圖1 c語言的編譯過程

其中前處理器產生編譯器的輸出,它實現以下的功能:

(1) 檔案包含

可以把源程式中的#include 擴充套件為檔案正文,即把包含的.h檔案找到併到#include 所在處。

(2) 條件編譯

前處理器根據#if和#ifdef等編譯命令及其後的條件,將源程式中的某部分包含進來或排除在外,通常把排除在外的語句轉換成空行。

(3) 巨集

前處理器將源程式檔案中出現的對巨集的引用成相應的巨集 定義,即本文所說的#define的功能,由前處理器來完成。

經過前處理器處理的源程式與之前的源程式有所有不同,在這個階段所進行的工作只是純粹的替換與,沒有任何計算功能,所以在學習#define命令時只要能真正理解這一點,這樣才不會對此命令引起誤解並誤用。

c語言中的巨集定義怎麼用?

4樓:仁昌居士

c語言bai中的巨集

定義用du法分為兩種。

1、不帶引數zhi的巨集定義比較dao簡單,就是用一個指定回的答識別符號來代表一個字串。它的一般形式為“#define 識別符號 字串”,例如#define e 2.718281828459。

這種方法使使用者能以一個簡單的名字代替一個長的字串。

2、帶引數的巨集定義不是僅僅進行簡單的字串替換,還要進行引數替換。其定義的一般形式為;“#define 識別符號(巨集名)(參數列) 字串”,字串中包含在括號中所指定的引數。例如#define s(a,b) a*b area=s(3.

2)。

5樓:天雲一號

巨集定義的格式如下:

#define  識別符號  字串

其中,#表示這是一條預處理命令;內#define為巨集容定義命令;“識別符號”為巨集定義的巨集名;“字串”可以上常數、表示式、格式串等。

舉例如下:

#define pi 3.14   // 對3.14進行巨集定義,巨集名為pi

void main()

6樓:匿名使用者

在想對特定的內容定義的時候用

參考**

有問版題請追問 滿意記得權採納

7樓:匿名使用者

#define 巨集名稱 定值

在c語言中 巨集定義是什麼?

8樓:雪人晒太陽

在c語言源程式中,允許用一個識別符號來表示一個字串,稱為巨集,巨集定義是由源程式中的巨集定義命令完成的,巨集替換是由預處理程式自動完成的。巨集定義是c提供的三種預處理功能的其中一種,這三種預處理包括:巨集定義、檔案包含、條件編譯。

9樓:仁昌居士

c語言中的巨集定義用法分為兩種。

1、不帶引數的巨集定義比較簡單,就是用一個指定的識別符號來代表一個字串。它的一般形式為“#define 識別符號 字串”,例如#define e 2.718281828459。

這種方法使使用者能以一個簡單的名字代替一個長的字串。

2、帶引數的巨集定義不是僅僅進行簡單的字串替換,還要進行引數替換。其定義的一般形式為;“#define 識別符號(巨集名)(參數列) 字串”,字串中包含在括號中所指定的引數。例如#define s(a,b) a*b area=s(3.

2)。

c語言中的巨集定義有什麼用?

10樓:風林火陰山雷

您好!很高興為您解答。

巨集定義的用處主要體現在便於程式的除錯上。

比如我要寫一個計算圓相關資訊(周長、面積等等)的程式,需要定義π(3.14):

#define pi 3.14

那麼勢必pi這個標識可以在程式中代替所有的3.14,如果我發現計算的精度不夠,需要π的更多有效位時,則只需將巨集定義修改為:

#define pi 3.1415926

那麼程式中的所有pi都會變成3.1415926

可想而知,沒有巨集定義,我需要將**中全部的3.14都手動改為3.1415926

即使是定義double pi=3.14;,你會發現當**很長時,在亂軍叢中找到一行“double pi=3.14;”是多麼困難的事。

又比如陣列,定義時是不能出現“int a[n];”這樣的定義的,編譯通不過,因為必須規定陣列長度。

但如果是:

#define n 10

int a[n];

就可以,對巨集定義編譯器是不作檢查的,應為巨集定義只是簡單的符號替換。所以一旦我還沒有確定要定義多長的陣列,但又想通過編譯時,就可以提現巨集定義的用處了。

如此看來,巨集定義提升了程式編寫的靈活性。

望採納~如您還有不解,歡迎追問~

11樓:綠波菜

在這個題中是看不出什麼好處 for (int i=0; i以用 10 代替,因為題目簡單 但是如果比較複雜的 如二位陣列啊a[m][n] 中可能一個 for (int i=0; i

m n 巨集定義,就不需再用具體數值代替 這樣 程式的可讀性就好很多,你要知道,程式設計師編好程式 也會有人幫他複查的,如果你都用數值代替 ,一旦**很複雜了你自己看的明白,別人就不知所云了,當然還有一些好處 如 當遇到較長數值時 用一個字母代替 有簡化作用等。

12樓:匿名使用者

①重用性高:比如你定義一個函式a裡有個陣列a[10],其他地方用到了函式a但是陣列大小為100,若是用了巨集定義就不用一個個改了,直接把函式複製過去#define n 10改為#define n 100即可

②不易出錯:用到很多的某一資料時很管用如#define π 3.1415916

13樓:閒來無事

編譯的時候替換成10

C語言中怎樣定義動態一維陣列,c語言中定義一個動態一維陣列的函式,然後在主函式中使用

天雲一號 在c語言中,陣列的定義都是固定長度的,長度不允許變化。可以通過連結串列的方式來達到定義 動態陣列 的等價功能,舉例如下 連結串列節點定義如下 struct node 存放資料時可以對節點中的node賦值即可,如 struct node p 定義一個連結串列節點p data 3 存放第一個資...

c語言中巨集定義的define和typedef的區別是什麼

1 define是預處理指令,在編譯預處理時進行簡單的替換,不作正確性檢查,不關含義是否正確照樣帶入,只有在編譯已被的源程式時才會發現可能的錯誤並報錯。例如 define pi 3.1415926 程式中的 area pi r r 會替換為3.1415926 r r 如果你把 define語句中的數...

c語言中巨集跟常變數的定義有什麼區別

c當中是沒有常變數的,也就是定義的變數賦值了常數但是仍然可以改變值 c 裡邊才有常變數,定義同時初始化,以後就不能改變值了。c中的巨集定義就是一種替換,上的複製替換,可以這樣理解,define a 12345就是凡是a出現的地方都用12345替換,當然巨集替換就不止數值,還可以到字串 函式表示式上去...