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,可以這樣 define pi 3.1415926 說明 巨集定義的格式是 define 巨集名 字串 對照上面的定義,巨集名是pi,字串是3.1415926。編譯器在編譯程式時,先使用巨集名代表的字串把所有巨集名替換,然後再進行編譯。注意點 巨集定義後面不需要... 錯誤原因 定義巨集的時候 define print a 多了一個分號 一直到下面 的時候巨集自動幫你替換成 printf the end 那麼根據for迴圈的規律,不加 的情況下,它只執行 printf the end 所以不一樣,第2個之所以只輸出一個其實那是在for迴圈結束後才執行的 注 巨集定... c 巨集定義將一個識別符號定義為一個字串,源程式中的該識別符號均以指定的字串來代替。前面已經說過,預處理命令不同於一般c 語句。因此預處理命令後通常不加分號。這並不是說所有的預處理命令後都不能有分號出現。由於巨集定義只是用巨集名對一個字串進行簡單的替換,因此如果在巨集定義命令後加了分號,將會連同分號...如何在C 中定義巨集常量pi
關於C語言巨集定義的問題,C語言的巨集定義問題
關於C 巨集定義問題,關於C 巨集定義避免多次包含的問題,如何解決?