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

2021-06-21 04:08:34 字數 4911 閱讀 5853

1樓:匿名使用者

你定義了。在程式中是不能改變的。只能在定義的地方修改。程式在預處理期間進行值替換。

2樓:德眾

比如巨集定義在一開頭定義# define n 10,那麼接下來所有的n都是10,巨集定義一旦定下除非你修改**否則都無法修改巨集定義

3樓:成都中公優就業

巨集定義在程式內是不可改變的,只能在定義的地方只能在定義的地方修改。程式在預處理期間進行值替換。

舉例說明

#define n 20

這個就是巨集定義,當然可以修改,例如這個n代表輸入陣列個數,在主程式中void main()

就可以這樣用,在編譯時,程式會自動替換掉n為20,既你巨集定義的值;只會花費編譯時間。如果你想修改陣列大小隻需修改

#define n 30;

即可,當然識別符號n也可以修改。‍

4樓:暴風一號

當然可以修改!

例如:#define image_w 500就可以修改為

#define image_w 700

5樓:匿名使用者

巨集定義就是指在main函式之前讀一某些變數進行定義,便於在編寫時的使用,同時在修改的時候也會很方便的,你如說我把m定義成(x*x+3*x),在以後的使用中,我可以直接用m就行了,很方便的,而且如果修改的話不用全改,只需要在巨集定義那裡改了就行

6樓:匿名使用者

#define n 20

這個就是巨集定義,當然可以修改,

例如這個n代表輸入陣列個數,在主程式中

void main()

就可以這樣用,在編譯時,程式會自動替換掉n為20,既你巨集定義的值;只會花費編譯時間。如果你想修改陣列大小隻需修改

#define n 30;即可,當然識別符號n也可以修改。

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

7樓:青山鬱

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

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

8樓:八條

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

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

看懂了嗎,希望能幫上你

9樓: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語言怎麼把巨集定義的資料配置到檔案中,當需要更改某些資料時,不需要開啟程式,在檔案中直接修改。

10樓:匿名使用者

巨集定義不是變數或常量,c語言在編譯前要進行預處理,這些處理包括巨集,其實就是用定義的巨集,把**中使用的巨集名全部替換掉,是純粹的字串替換,不檢查語法,比如:

#define pi 3.1415926

檔案中的 “pi” 全部換成 “3.1415926” ,這是為了編輯**方便而已;編譯後就不會有 "pi" ,而是常量 ”3.1415926“ ,

你要做配置檔案,就要設定變數,把檔案中的資料讀入變數,什麼變數都可以,

你可以去查一查c語言的巨集定義

11樓:奧宇斯汀

1)首先建立一個 標頭檔案

2)然後在標頭檔案中定義這些巨集

3) 在 .c 檔案中包含就行了

別忘在在標頭檔案中加上 #ifndef ***x #define ***x #endif

12樓:匿名使用者

自己定義一個格式

把要修改的資料定義為變數,

程式啟動時讀取檔案的資料,修改相應引數的變數.

c語言的巨集定義問題

c語言巨集定義如何用?用巨集定義有什麼優點?

13樓:我愛流雨飛軒

巨集定義巨集定義是c提供的三種預處理功能的其中一種,這三種預處理包括:巨集定義、檔案包含、條件編譯

編輯本段1.不帶引數的巨集定義:

巨集定義又稱為巨集代換、巨集替換,簡稱“巨集”。

格式:#define 識別符號 字串

其中的識別符號就是所謂的符號常量,也稱為“巨集名”。

預處理(預編譯)工作也叫做巨集:將巨集名替換為字串。

掌握"巨集"概念的關鍵是“換”。一切以換為前提、做任何事情之前先要換,準確理解之前就要“換”。

即在對相關命令或語句的含義和功能作具體分析之前就要換:

例: #define pi 3.1415926

把程式中出現的pi全部換成3.1415926

說明:(1)巨集名一般用大寫

(2)使用巨集可提高程式的通用性和易讀性,減少不一致性,減少輸入錯誤和便於修改。例如:陣列大小常用巨集定義

(3)預處理是在編譯之前的處理,而編譯工作的任務之一就是語法檢查,預處理不做語法檢查。

(4)巨集定義末尾不加分號;

(5)巨集定義寫在函式的花括號外邊,作用域為其後的程式,通常在檔案的最開頭。

(6)可以用#undef命令終止巨集定義的作用域

(7)巨集定義可以巢狀

(8)字串" "中永遠不包含巨集

(9)巨集定義不分配記憶體,變數定義分配記憶體。

編輯本段2.帶引數的巨集定義:

除了一般的字串替換,還要做引數代換

格式:#define 巨集名(參數列) 字串

例如:#define s(a,b) a*b

area=s(3,2);第一步被換為area=a*b; ,第二步被換為area=3*2;

類似於函式呼叫,有一個啞實結合的過程:

(1)實參如果是表示式容易出問題

#define s(r) r*r

area=s(a+b);第一步換為area=r*r;,第二步被換為area=a+b*a+b;

正確的巨集定義是#define s(r) ((r)*(r))

(2)巨集名和引數的括號間不能有空格

(3)巨集替換隻作替換,不做計算,不做表示式求解

(4)函式呼叫在編譯後程式執行時進行,並且分配記憶體。巨集替換在編譯前進行,不分配記憶體

(5)巨集的啞實結合不存在型別,也沒有型別轉換。

(6)函式只有一個返回值,利用巨集則可以設法得到多個值

(7)巨集使源程式變長,函式呼叫不會

(8)巨集不佔執行時間,只佔編譯時間,函式呼叫佔執行時間(分配記憶體、保留現場、值傳遞、返回值

c語言巨集定義技巧(常用巨集定義)

寫好c語言,漂亮的巨集定義很重要,使用巨集定義可以防止出錯,提高可移植性,可讀性,方便性 等等。下面列舉一些成熟軟體中常用得巨集定義。。。。。。

14樓:匿名使用者

主要用於函式重定義,通用性,可以用一個變數符號替代另一個變數符號格式:#define m(x,y) x+y在主程式裡寫入z=m(6,9);等價於z=6+9;而寫成z=(6-8,9);等價於z=6-8+9 ;直接代入

還有就是 :#define uint unsigned int 即用 uint 代替unsigned int 便於書寫,還有就是不同作業系統的通用變數識別

15樓:匿名使用者

用#define 來定義,如#define max 100

優點:在以後的程式中 要修改max的大小 不用跑到程式中找 直接修改

#define max 的大小即可。很方便。

16樓:匿名使用者

自己去**找呀!!!!

c語言巨集定義計算問題,C語言巨集定義計算問題

i f 4 4 f 2 2 4 4 4 4 2 2 2 2 28如果 define f x x x i f 4 4 f 2 2 4 4 4 4 2 2 2 2 64 define f x x x i f 4 4 f 2 2 這樣i f 4 4 f 2 2 4 4 4 4 2 2 2 2 24 8 3...

關於c語言巨集定義輸出,關於C語言巨集定義輸出

巨集定義就是字串代替,先把整個東西代替進去 a s i s i z s i a a s i 這是三目運算子,從左到右。先是 a s i 這裡是 a s 1 b 成立 接下來是 s i z 這裡是 s 2 c z 也成立 所以是,s i a a 這裡其實就是小寫轉大寫 這裡是,s 3 d a a 結果...

C語言巨集定義意思

巨集定義是c語言提供的三種預處理功能的其中一種,這三種預處理包括 巨集定義 檔案包含 條件編譯。巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define 識別符號 字串 其中的識別符號就是所謂的符號常量,也稱為 巨集名 預處理 預編譯 工作也叫做巨集 將巨集名替換為字串。掌握 巨集 概念的關...