C 中的巨集定義是什麼,C 中,巨集定義與一般的定義有什麼區別?

時間 2021-08-30 10:38:27

1樓:向上爬的蝸牛

namespace:名字空間/名稱空間,一個程式可能由不同的人來寫,為了避免兩個人所寫的變數名衝突(同名),我們可以使用namespace ***;將自己要使用的庫函式或變數在該名字空間中定義的.避免了不必要的衝突了。

c++標準程式庫中的所有識別符號都被定義於一個名為std的namespace中。

using namespace std; //宣告使用名字空間std巨集定義跟它根本不是一回事,巨集定義可以理解為就是一個簡單的替換,#define 識別符號 字串

,就是把程式中出現的識別符號用該字串替代,注意替代後該字串是沒有識別符號的功能的!!就比如說:#define int abc 巨集定義後int a,會被簡單的替換成abc a,是會報錯的!

2樓:匿名使用者

using namespase std;這個是引入名稱空間std,在std這個名稱空間下定義了很多c++常用的方法和類。#define 識別符號 字串,這個是巨集定義,就是給字串取個別名。例如#define num 5 在程式中 你寫 if(a

3樓:

名稱空間 , 有很多i/o物件名就是在這裡命名的,如果不宣告名稱空間,那麼那些i/o物件將無法引用,比如 cout , cin 等.

4樓:祿學校寄藍

樓上說的對,就是起別名,方便程式設計師。在預處理的時候會把巨集。然後進行編譯

c++中,巨集定義與一般的定義有什麼區別?

5樓:匿名使用者

c/c++中的巨集定義是進行符號常量定義,該定義用於定義一種符號資訊用來表示一些特殊的資訊,使源**更具有可讀性,同時,也可以提高系統的可移植性。巨集定義是在編譯時進行解釋與替換的,實際執行中的**是沒有巨集定義符號的。而一般變數或常量的定義在系統執行中,是有自己的記憶體空間,訪問許可權,和生存週期的。

巨集定義常量

#define pi 3.141

注意:1、符號常量與數值間沒有等號  2、該語句不需要以分號結尾

如:#define pi = 3.141   語法上無大問題,但應用中可能會出錯,編譯時,所有的pi會替換成『= 3.141'

#define pi 3.141 ;   語法上無大問題,但應用中可能會出錯,編譯時,所有的pi會替換成『3.141 ;』

變數定義

double pi=3.141 ; //定義一個變數pi,在記憶體中會給變數pi分配一個空間,其空間中儲存了3.141,在使用中,可以隨時改變pi值,如:

pi=3.1415926;

常量定義

const  pi=3.141 ;  //因為沒有寫型別,預設為int型別,所以,這裡的pi值實際為3

const double pi=3.141 ; //正確定義一個浮點型常量

常量與變數的差別是:常量一經定義後,就不能再修改!如果在使用中修改pi,則編譯或執行時會出錯,如vc6報錯:

error c2166: l-value specifies const object

常量與巨集定義常量的區別是: 巨集定義會在預處理階段將用define定義的內容對**中相應的識別符號進行替換(編譯期替換,編譯後巨集消失)。因此程式執行時,常量表中並沒有用define定義的常量,系統不為它分配記憶體。

const定義的常量,在程式執行時在常量表中,系統為它分配記憶體。

6樓:

要說區別其實也沒有什麼,主要都是為了使用方便,巨集定義的是一個常量,一般定義可以是常亮也可以是變數,另外一般的巨集定義是全域性的,可以任意引用,一般的定義有一定的作用域

7樓:文靜婷留

#define pi=3.141 →在編譯的時候替換 double pi=3.141→變數,可以重新賦值

這兩種,當多次用到pi時用巨集定義也就是#define pi=3.141

const double pi=3.141; //常值變數,不可以重新賦值

8樓:

#define pi=3.141 //在編譯的時候替換

//下面是在執行的時候分配單元

double pi=3.141; //變數,可以重新賦值const double pi=3.141; //常值變數,不可以重新賦值

9樓:蘋果砸向牛頓

#define pi=3.141 //在編譯的時候替換

//下面是執行時分配單元

double pi=3.141 //變數 可以重新賦值

const double pi=3.141 //常值變數 不可以重新賦值

簡單說就是double可重新賦值,而const不可重新賦值

10樓:

生存域和分配空間的區別。

#define 定義,巨集會從當前生效,一直到當前檔案結束。

且變編譯時會進行巨集擴充套件 遇到pi 會自動被編譯器替換為3.141,不會分配空間

double 和const定義遵循一般的變數生存域原則。即從當前開始到下個" }".

void test()

//k的生存域到此結束

..............................

}double 會為變數分配空間,const 會將常量分配到全域性資料區。

由於define定義沒有空間,即不能將巨集的指標賦值給變數或常量。

編譯時替換,因為將源**翻譯成可執行的檔案時,要經過編譯和連結,才能生成可執行檔案(exe),也就是在這個過程中編譯器直接將巨集擴充套件成定義的內容

c++中這樣的巨集定義作用是什麼

11樓:匿名使用者

類似於const idd_report_main=3000

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

12樓:雪人晒太陽

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

13樓:仁昌居士

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

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

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

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

2)。

如何在C 中定義巨集常量pi

飛雪射鹿笑倚鴛 c 中用巨集來定義pi,可以這樣 define pi 3.1415926 說明 巨集定義的格式是 define 巨集名 字串 對照上面的定義,巨集名是pi,字串是3.1415926。編譯器在編譯程式時,先使用巨集名代表的字串把所有巨集名替換,然後再進行編譯。注意點 巨集定義後面不需要...

關於C語言巨集定義的問題,C語言的巨集定義問題

錯誤原因 定義巨集的時候 define print a 多了一個分號 一直到下面 的時候巨集自動幫你替換成 printf the end 那麼根據for迴圈的規律,不加 的情況下,它只執行 printf the end 所以不一樣,第2個之所以只輸出一個其實那是在for迴圈結束後才執行的 注 巨集定...

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

c 巨集定義將一個識別符號定義為一個字串,源程式中的該識別符號均以指定的字串來代替。前面已經說過,預處理命令不同於一般c 語句。因此預處理命令後通常不加分號。這並不是說所有的預處理命令後都不能有分號出現。由於巨集定義只是用巨集名對一個字串進行簡單的替換,因此如果在巨集定義命令後加了分號,將會連同分號...