在C語言中 巨集定義是什麼?
巨集定義又稱為巨集代換、巨集替換,簡稱“巨集”。
格式:#define 識別符號 字串
其中的識別符號就是所謂的符號常量,也稱為“巨集名”。
預處理(預編譯)工作也叫做巨集展開:將巨集名替換為字串。
掌握"巨集"概念的關鍵是“換”。一切以換為前提、做任何事情之前先要換,準確理解之前就要“換”。
即在對相關命令或語句的含義和功能作具體分析之前就要換:
例:#define PI 3.1415926
把程式中出現的PI全部換成3.1415926
說明:
(1)巨集名一般用大寫
(2)使用巨集可提高程式的通用性和易讀性,減少不一致性,減少輸入錯誤和便於修改。例如:陣列大小常用巨集定義
(3)預處理是在編譯之前的處理,而編譯工作的任務之一就是語法檢查,預處理不做語法檢查。
(4)巨集定義末尾不加分號
(5)巨集定義寫在函式的花括號外邊,作用域為其後的程式,通常在檔案的最開頭。
(6)可以用#undef命令終止巨集定義的作用域
(7)巨集定義不可以巢狀
(8)字串" "中永遠不包含巨集
(9)巨集定義不分配記憶體,變數定義分配記憶體。
(10)巨集定義不存在型別問題,它的引數也是無型別的。
相關推薦
C語言中巨集定義和函式的取捨
原文連結:http://www.embedu.org/Column/Column177.htm 要寫好C語言,漂亮的巨集定義是非常重要的。巨集定義可以幫助我們防止出錯,提高程式碼的可移植性和可讀性等。 在軟體開發過程中,經常有一些常用或者通用的功能或者程式碼段,這些功能既可以寫成函式,也可以
在C語言中 巨集定義是什麼?
巨集定義是C提供的三種預處理功能的其中一種,這三種預處理包括:巨集定義、檔案包含、條件編譯 巨集定義又稱為巨集代換、巨集替換,簡稱“巨集”。 格式:#define 識別符號 字串 其中的識別符號就是所謂的符號常量,也稱為“巨集名”。 預處理(預編譯)工作也叫做巨集展開:將巨集名替換為字串。 掌握"巨集"概念的
c語言中宏定義和常量定義的區別
沒有 int 符號表 cnblogs 格式 nbsp 參數 不同之處 區別 他們有共同的好處就是“一改全改,避免輸入錯誤”哪兩者有不同之處嗎?有的。 主要區別就在於,宏定義是在編譯之前進行的,而const是在編譯階段處理的 宏定義不占用內存單元而const定義的常量
C語言開關巨集定義的學習##__VA_ARGS__
最近寫c程式,學到一種開關巨集,極大提高程式的控制性: #define __DEBUG #ifdef __DEBUG #define tnfs_print(format, ...) printf (format, ##__VA_ARGS__) #else #define tnfs_print
【C語言】巨集定義define 和型別重新命名typedef
C語言裡面有兩個不容易區分的語法概念,巨集定義define 和型別重新命名typedef。下面我們來談一下兩者之間的差異。 1.型別重新命名typedef: 關鍵字typedef提供了一種為已定義好的資料型別建立別名的機制,為了建立更簡短的型別名,通常使用type
C語言應用巨集定義解決三角形的面積問題
#include <stdio.h> #include<math.h> #define s(a,b,c) ((0.5)*((a)+(b)+(c))) #define area(s,a,b,c) sqrt((s)*((s)-(a))*((s
在c語言中自定義了一個函式,在main中呼叫時提示找不到識別符號
解決方案一: 把定義的函式放在,main函式之前。 void f() { printf("Hello"); } main() { f(); } 解決方案二: 在main函式之前宣告。 void f(); main() { f
玩兒轉C語言:巨集定義(1)
1、為什麼要有巨集定義? 程式碼中某個特定數值需要參與運算,而且該數值作用於多個地方,當需要對該數值進行修改時,希望只改動一個地方就能實現該數值的全部更新;即便某個數值只用到一次,當修改時也會面臨搜尋閱讀大量程式碼、數值含義不明晰的問題;某些“操作塊”封裝成
C語言中矩陣定義問題
C語言在進行矩陣運算的時候可以按照下邊來定義 typedef struct Matrix { double **p; int rows; int cols; } Matrix; 向量可以定義成下式 typedef struct Vector { double *p;
C語言中沒有定義bool型別
今天才發現C語言中原來沒有定義bool型別。 如果要在C語言中使用bool型別,可以自己定義。 定義方式如下: #ifndef __cplusplus typedef char bool; #define false 0 #define true 1 #endif
在C語言中怎樣定義一個字串並輸入輸出
在C語言中沒有字串型別,用字元陣列處理字串 字元陣列定義:char 陣列名 [常量表達式][常量表達式] 說明:一維字元陣列,用於儲存和處理一個字串 。二維字元陣列,用於同時儲存和處理多個字串 輸入輸出方法:逐個字元輸入輸出:%c 整個字串輸入輸出:%s 一 :用s
c語言學習--巨集定義、條件編譯等
1. 防止一個頭檔案被重複包含 #ifndef COMDEF_H #define COMDEF_H //標頭檔案內容 #endif 2. 重新定義一些型別,防止由於各種平臺和編譯器的不同,而產生的型別位元組數差異,方便移
c語言的巨集定義缺陷
| 考慮asert巨集的定義。 | 定義1:#define assert(e) if(!e) _assert_error (__FILE__, __LINE__ ) | 當 if(x>0 && y>0) asser
堆疊在C語言中的定義(微控制器的中堆疊相當於棧)
在計機領域,堆疊是一個不容忽視的概念,我們編寫的C語言程式基本上都要用到。但對於很多的初學著來說,堆疊是一個很模糊的概念。堆疊:一種資料結構、一個在程式執行時用於存放的地方,這可能是很多初學者的認識,因為我曾經就是這麼想的和組合語言中的堆疊一詞混為一談。我身邊的一些程式設計
C語言中重複定義的問題
幾個基本知識: 1、標頭檔案:標頭檔案的作用在於編譯時,會在#include<*.h>位置處展開,所以如果有多個.c檔案include同一個標頭檔案(很常見),如果標頭檔案編寫時不進行處理,出現重複定義是不可避免的。尤其是當一個專案分成多個模組的時候。 2、一般
C語言中的一些巨集定義和常用的函式
文章目錄 一、typeof 關鍵字 二、snprintf()函式的作用 三、__builtin_expect的作用 四、C語言中常用的預定義 五、反斜槓的作用 一、typeof 關鍵字 如果
C語言中常見的巨集定義筆試/面試題
轉載地址:http://blog.163.com/china_2008ay/blog/static/90142252200961971756712/ 1,寫巨集定義:得到一個field在結構體(struct type)中的偏移量。 #define OFFSETOF(type
C語言中關於巨集定義的一點總結
1、常見的巨集定義語句有不帶引數的巨集定義和帶引數的巨集定義兩種 2、帶引數的巨集定義,在比較複雜時,往往通過\字元進行換行分割,來使其更加清晰。 比如: #include <stdio.h> #include <string.h> #defi
解決C/C++語言中全局變量重復定義的問題
分離 sta 9.png 代碼 extern 不同 遇到 情況 而且 前言 今天,在整理自己的代碼的時候,考慮到我寫的代碼從一至終都是在一個cpp文件裏面。於是,想把自己的代碼中的各個模塊分離開來,以便更好地閱讀和管理。 遇到的問題 我的做法是: 宏定義、結構體定義
常量的三種定義方式和static在c語言中的三種修飾
c語言的常量在執行期間為固定值,在定義後無法被修改常量可以是任何的資料基本型別,可以為整形,浮點常量,字元和字串常量1,使用const關鍵字2, 使用巨集定義3,使用列舉常量 列舉: 1 #include<stdio.h> 2 int main(){ 3 e