導航:首頁 > 程序命令 > 預處理命令一定要放在開頭嗎

預處理命令一定要放在開頭嗎

發布時間:2024-10-29 21:25:58

㈠ c語言 選擇題,選正確的,選好了給個說明

A)預處理命令行必須位於源文件的開頭
B)在源文件的一悉兄行上可以有多條預處理命令
C)宏名必須用大寫字母表示
D)宏替換不佔用程序的運行時間
答案:D
評析:通常,預處理命令位於源文件的開頭,也可以寫在函數與函數之間;不能在一行上寫多條預處理命令:宏名一般習慣用大寫字母表示,以便與變數名相區別,但這並非規定,也可睜判襲用小寫字母。

預處理命令是以#號開頭的代碼行,每一條預處理命令必須單獨佔用一行,由於不是C的語句,因此在結尾不能有分號「;」。

宏被定義後,其作用域一般為定義它的文件,通常#define命令寫在文件的開頭,但這也並非規定,實際上宏沖伏定義可以出現在程序的任何地方,但必須位於引用之前。

㈡ 常見的預處理命令有哪兩種

很多小夥伴在自己寫代碼的時候,已經多次使用過include命令。使用庫函數之前,應該用include引入對應的頭文件。其實這種以#號開頭的命令稱為預處理命令。

C語言源文件要經過編譯、鏈接才能生成可執行程序:

1) 編譯(Compile)會將源文件(.c文件)轉換為目標文件。對於 VC/VS,目標文件後綴為.obj;對於GCC,目標文件後綴為.o。

編譯是針對單個源文件的,一次編譯操作只能編譯一個源文件,如果程序中有多個源文件,就需要多次編譯操作。

2) 鏈接(Link)是針對多個文件的,它會將編譯生成的多個目標文件以及系統中的庫、組件等合並成一個可執行程序。

關於編譯和鏈接的過程、目標文件和可執行文件的結構、.h 文件和 .c 文件的區別,我們將在後期專題中講解。

在實際開發中,有時候在編譯之前還需要對源文件進行簡單的處理。例如,我們希望自己的程序在 Windows 和 Linux 下都能夠運行,那麼就要在 Windows 下使用 VS 編譯一遍,然後在 Linux 下使用 GCC 編譯一遍。但是現在有個問題,程序中要實現的某個功能在 VS 和 GCC 下使用的函數不同(假設 VS 下使用 a(),GCC 下使用 b()),VS 下的函數在 GCC 下不能編譯通過,GCC 下的函數在 VS 下也不能編譯通過,怎麼辦呢?

這就需要在編譯之前先對源文件進行處理:如果檢測到是 VS,就保留 a() 刪除 b();如果檢測到是 GCC,就保留 b() 刪除 a()。

這些在編譯之前對源文件進行簡單加工的過程,就稱為預處理(即預先處理、提前處理)。

預處理主要是處理以開頭的命令,例如include <stdio.h>等。預處理命令要放在所有函數之外,而且一般都放在源文件的前面。

預處理是C語言的一個重要功能,由預處理程序完成。當對一個源文件進行編譯時,系統將自動調用預處理程序對源程序中的預處理部分作處理,處理完畢自動進入對源程序的編譯。

編譯器會將預處理的結果保存到和源文件同名的.i文件中,例如 main.c 的預處理結果在 main.i 中。和.c一樣,.i也是文本文件,可以用編輯器打開直接查看內容。

C語言提供了多種預處理功能,如宏定義、文件包含、條件編譯等,合理地使用它們會使編寫的程序便於閱讀、修改、移植和調試,也有利於模塊化程

㈢ 什麼叫預處理命令

ANSI C標准規定, C源程序中可以加入一些預處理命令,以改進程序設計環境,提高編程效率.
預處理命令不是C語言本身的組成部分,所以在使用時以"#"開頭,以示和C語句的區別.
編譯程序在對源程序編譯之前首先對預處理命令進行處理(稱為預處理),將其替換成具有實際意義的內容,然後再進行編譯.
常用的預處理功能有:宏定義,文件包含,條件編譯.

具體例子http://www.sxuu.com/loveuu/Article/computer/dengji/erji/c2c/200508/3914.html

㈣ c語言中,以"#"開頭的控制行都是預處理命令嗎

對的。
預處理(或稱預編譯)是指在進行編譯的第一遍掃描(詞法掃描和語法分析)之前所作的工作。預處理指令指示在程序正式編譯前就由編譯器進行的操作,可放在程序中任何位置。
預處理是C語言的一個重要功能,它由預處理程序負責完成。當對一個源文件進行編譯時,系統將自動引用預處理程序對源程序中的預處理部分作處理,處理完畢自動進入對源程序的編譯。
C語言提供多種預處理功能,主要處理#開始的預編譯指令,如宏定義(#define)、文件包含(#include)、條件編譯(#ifdef)等。合理使用預處理功能編寫的程序便於閱讀、修改、移植和調試,也有利於模塊化程序設計。

㈤ 為什麼A是對的,預處理命令行都必須以#號開始 才是對的把

因為如果代碼是注釋它就不起作用了。

如/*注釋#define。

B、預處理命令行不可以 宏定義是可以的。

C、程序在執行過程中對預處理命令行進行處理。是在執行過程之前,所以才稱為預處理,就是先於程序處理的意思,這是對的。

宏定義又稱為宏代換、宏替換,簡稱「宏」。格式:#define標識符文本,其中的標識符就是所謂的符號常量,也稱為「宏名」。

D、對預處理命令行的處理是在編譯之前完成的,不是程序執行的過程中,選D。

(5)預處理命令一定要放在開頭嗎擴展閱讀:

正確的宏定義是#define S(r) ((r)*(r))

(2)宏名和參數的括弧間不能有空格

(3)宏替換只作替換,不做計算,不做表達式求解

(4)函數調用在編譯後程序運行時進行,並且分配內存。宏替換在編譯前進行,不分配內存

(5)宏的啞實結合不存在類型,也沒有類型轉換。

(6)宏展開使源程序變長,函數調用不會

(7)宏展開不佔運行時間,只佔編譯時間,函數調用占運行時間(分配內存、保留現場、值傳遞、返回值)。

閱讀全文

與預處理命令一定要放在開頭嗎相關的資料

熱點內容
linux中oracle監聽 瀏覽:618
程序員高價值朋友圈 瀏覽:486
雲伺服器做淘寶店 瀏覽:802
程序員判3年緩3年 瀏覽:909
伺服器雲監控系統 瀏覽:651
ios暴力解壓軟體 瀏覽:430
可以搜簡便演算法的軟體 瀏覽:200
各種的解壓小玩具 瀏覽:933
百度雲伺服器bcc域名綁定 瀏覽:486
android網路mp3格式 瀏覽:321
程序員抱怨it氣氛 瀏覽:698
改apk伺服器地址 瀏覽:414
原理圖中的編譯 瀏覽:924
繽智怎麼給車機安裝app 瀏覽:728
伺服器的證件是什麼 瀏覽:538
linuxgraphics 瀏覽:137
ACPI編譯工具MaciASL 瀏覽:895
導線點加密技巧 瀏覽:103
閃迪加密軟體如何去除 瀏覽:560
格力壓縮機技術 瀏覽:7