前言:宏實質就是編譯器在對代碼進行編譯之前進行的一個「查找替換」工作,就跟你在處理文檔時用WPS/談搭WORD/記事本等進行「查找替換」操作一樣。
C語言的編譯系統對宏命令的處理是()
A。在程序運行時進行的
B。在對源程序中其他成分正式編譯之前進行的
C。在程序連續時進行的
D。和C程序中的其他語句同時進行編譯
答:選B。在對源程序中其他成分正式編譯之前進行的
2,
#define N 2 /* 在預編譯時將用下面代碼中N替換成2 */
#define M N+1 /* 在預編譯時將M替換成N+1(即2+1,N會再被替換成嘩羨2)*/
#define NUM 2*M+1 /* 如上:在預編譯時NUM替換成2*M+1,即2*N+1+1,即2*2+1+1*/
main()
{int i;
for(i=1;i<=NUM;i++)printf("%d\亂侍拍n",i);
/*
* 如上所述,上句展開為:for(i=1;i<=2*2+1+1;i++)printf("%d\n",i);
* 所以:循環將執行6次
*/
}
/* 切記注意:每一個宏百進行替換時只是替換「正文」中的內容,而不包括預編譯語句的內容, 否則就會像不少人理解的那樣,錯誤地認為第2個題中的循環將執行7次 */
2. C語言中的宏定義怎麼用
C語言中的宏定義用法分為兩種。
1、不帶參數的宏定義比較簡單,就是用一個指定的標識符來代表一個字元串。它的一般形式為「#define 標識符 字元串」,例如#define E 2.718281828459。這種方法使用戶能以一個簡單的名字代替一個長的字元串。
2、帶參數的宏定義不是僅僅進行簡單的字元串替換,脊橋還要進行參數替換。其定義的一般形式為;「#define 標識符(宏名)(參數表) 字元串」,字元串中包含在括弧中所指定的參數。例如#define S(a,b) a*b area=S(3. 2)。
擴展臘野兆資料:
宏定義只佔編譯時間,函數調用則佔用運行時間(分配單元,保存現輪租場,值傳遞,返回),每次執行都要載入,所以執行相對宏定義會較慢。
使用宏定義次數多時,宏定義展開後源程序很長,因為每展開一次都使程序增長,但是執行起來比較快一點(這也不是絕對的,當有很多宏定義展開,目標文件很大,執行的時候運行時系統換頁頻繁,效率就會低下)。而函數調用不使源程序變長。
3. C語言的編譯系統對宏命令的處理
前言:宏實質就是編譯器在對代碼進行編譯之前進行的一個「查找替換」工作,就跟你在處理文檔時用WPS/WORD/記事本等進行「查找替換」操作一樣。
C語言的編譯系統對宏命令的處理是()
A。在程序運行時進行的
B。在對源程序中其他成分正式編譯之前進行的
C。在程序連續時進行的則飢
D。和C程序中的其他語句同時進行編譯
答:選B。在對源程序中其他成分正式編譯之前進行的
2,
#define
N
2
/*
在預編譯時將用下面代碼中N替換成2
*/
#define
M
N+1
/*
在預編譯時將M替換成N+1(即2+1,N會再被替換成2)*/
#define
NUM
2*M+1
/*
如上:在預編譯時NUM替換成2*M+1,即2*N+1+1,即2*2+1+1*/旁殲
main()
{int
i;
for(i=1;i<=NUM;i++)printf("%d\n",i);
/*
*
如上所述,上句展開運盯沖為:for(i=1;i<=2*2+1+1;i++)printf("%d\n",i);
*
所以:循環將執行6次
*/
}
/*
切記注意:每一個宏百進行替換時只是替換「正文」中的內容,而不包括預編譯語句的內容,
否則就會像不少人理解的那樣,錯誤地認為第2個題中的循環將執行7次
*/
4. c語言宏定義如何用用宏定義有什麼優點
用#define 來定義,如#define Max 100
優點:在以後的程序中 要修改Max的大小 不用跑到程序中找 直接修改
#define Max 的大小即可。很方便。
5. C語言宏定義
樓主看看書,仔細看看編譯預處理都做了哪些事情。
程序設計語言的預處理的概念:在編譯之前進行的處理。 C語言的預處理主要有三個方面的內容: 1.宏定義; 2.文件包含; 3.條件編譯。 預處理命令以符號「#」開頭。
宏定義又稱為宏代換、宏替換,簡稱「宏」。預處理製作單純的宏展開,並不是檢查語法錯誤,所說義是錯誤的。
語法錯誤都是編譯階段才檢查的。預處理是不檢查的。
6. 在C語言中 宏定義是什麼
宏定義是C提供的三種預處理功能的其中一種,這三種預處理包括:宏定義、文件包含、條件編譯。
宏定義又稱為宏代換、宏替換,簡稱「宏」。
宏(Macro),是一種批量處理的稱謂。計算機科學里的宏是一種抽象(Abstraction),它根據一系列預定義的規則替換一定的文本模式。
解釋器或編譯器在遇到宏時會自動進行這一模式替換。對於編譯語言,宏展開在編譯時發生,進行宏展開的工具常被稱為宏展開器。
宏這一術語也常常被用於許多類似的環境中,它們是源自宏展開的蠢圓念概念,這包括鍵盤宏和宏語言。絕大多數情況下,「宏」這個詞的使用暗示著將小命令或動作轉化為一系列指令。
C語言是一門帶困通用計算機編程語言,廣泛應用於底層開發。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言制定了一套完整的美國國家標准語法,稱為ANSIC,作為C語言最初的標准。
目前2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。
C語言是一門面腔世向過程的計算機編程語言,與C++,Java等面向對象的編程語言有所不同。
其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、TurboC等。
宏定義-網路
C語言-網路
7. 「C語言的宏定義」是什麼
宏定義又稱為宏代換、宏握族野替換,簡稱「宏」。
是段喊C提供的三種預處理功能的其中一種。
8. C語言編譯系統對宏替換的處理是在什麼時候進行的
是正式工作開始之前的准備工作,所以宏替換是在對程序編譯之前進行的。
宏替換是C/C++的預處者遲橋理中的一部分,對於宏定義中的形參,在替首猛換列表中,如果不是作為#或##的操作數,那麼將對應實參完全展旦高開(相當於對實參進行求值),然後將替換列表中的形參替換掉,如果是#或##的操作數。
(8)c語言編譯系統對宏定義處理擴展閱讀:
宏的用途在於自動化頻繁使用的序列或者是獲得一種更強大的抽象能力。
計算機語言如C語言或匯編語言有簡單的宏系統,由編譯器或匯編器的預處理器實現。C語言的宏預處理器的工作只是簡單的文本搜索和替換,使用附加的文本處理語言如M4,C程序員可以獲得更精巧的宏。
宏的行為如同是函數對自身程序文本的變形,並且可以應用全部語言來表達這種變形。一個C宏可以定義一段語法的替換,然而一個Lisp的宏卻可以控制一節代碼的計算。
9. 宏定義c語言是什麼意思
在C語言源程序中,允許用一個標識符來表示一個字元串,稱為宏,宏定義是由源程序中的宏定義命令完成的,宏替換是由預處理程序自動完成的。宏定義是C提供的三種預處理功能的其中一種,這三種預處理包括:宏定義、文件包含、條件編譯。
C語言中,預處理過程讀入源代碼,檢查包含預處理指令的語句和宏定義,並對源代碼進行相應的轉換,預處理過程還會刪除程序中的注釋和多餘的空白符號。
預處理指令是以#開頭的代碼行,#必須是該行除了空白字元外的第一個字元。#後是指令關鍵字,在#和指令關鍵字之間允許存在若干空白字元。
宏的用途
在於自動化頻繁使用的序列或者是獲得一種更強大的抽象能力。
計算機語言如C語言或匯編語言有簡單的宏系統,由編譯器或匯編器的預處理器實現。C語言的宏預處理器的工作只是簡單的文本搜索和替換,使用附加的文本處理語言如M4,C程序員可以獲得更精巧的宏。
Lisp類語言如Common Lisp和Scheme有更精巧的宏系統:宏的行為如同是函數對自身程序文本的變形,並且可以應用全部語言來表達這種變形。一個C宏可以定義一段語法的替換,然而一個Lisp的宏卻可以控制一節代碼的計算。
以上內容參考:網路-宏定義
10. C語言中的宏定義如何使用
宏定義又稱為宏代換、宏替換,簡稱"宏"。
格式:
#define 標識符 字元串
其中的標識符就是所謂的符號常量,也稱為"宏名"。
預處理(預編譯)工作也叫做宏展開:將宏名替換為字元串。
掌握"宏"概念的關鍵是"換"。一切以換為前提、做任何事情之前先要換,准確理解之前就要"換"。
即在對相關命令或語句的含義和功能作具體分析之前就要換:
例:
#define Pi 3.1415926
把程序中出現的Pi全部換成3.1415926