Ⅰ C語言程序中的#include和#define均不是C語句。 對還是錯的啊
C語言程序中的#include和#define均不是C語句。是對的。
#include是在程序編譯之前要處理的內容,稱為編譯預處理命令。#define是C語言中的一個預處理指令,其中的「#」表示這是一條預處理命令。凡是以「#」開頭的均為預處理命令,「define」為宏定義命令,用於將指定頭文件嵌入源文件中。
它們都以「#」開頭,不是說明或語句,在行末不必加分號,如加上分號則連分號也一起置換。所以不是c語言的程序語句。
(1)c語言預編譯命令必須以擴展閱讀:
#include後面有兩種方式,<>;和""前者先在標准庫中查找,查找不到在path中查找。後者為文件路徑,若直接是文件名則在項目根目錄下查找。
在#define中,是用宏名來表示一個字元串,在宏展開時又以該字元串取代宏名,這只是一種簡單的代換,字元串中可以含任何字元,可以是常數,也可以是表達式,預處理程序對它不作任何檢查。如有錯誤,只能在編譯已被宏展開後的源程序時發現。
Ⅱ c語言 選擇題,選正確的,選好了給個說明
A)預處理命令行必須位於源文件的開頭
B)在源文件的一悉兄行上可以有多條預處理命令
C)宏名必須用大寫字母表示
D)宏替換不佔用程序的運行時間
答案:D
評析:通常,預處理命令位於源文件的開頭,也可以寫在函數與函數之間;不能在一行上寫多條預處理命令:宏名一般習慣用大寫字母表示,以便與變數名相區別,但這並非規定,也可睜判襲用小寫字母。
預處理命令是以#號開頭的代碼行,每一條預處理命令必須單獨佔用一行,由於不是C的語句,因此在結尾不能有分號「;」。
宏被定義後,其作用域一般為定義它的文件,通常#define命令寫在文件的開頭,但這也並非規定,實際上宏沖伏定義可以出現在程序的任何地方,但必須位於引用之前。
Ⅲ c++預處理命令有什麼用 如#include "stdafx.h"是什麼意思
程序設計語言的預處理的概念:在編譯之前進行的處理。 C語言的預處理主要有三個方面的內容: 1.宏定義; 2.文件包含; 3.條件編譯。 預處理命令以符號「#」開頭。
1.不帶參數的宏定義:
宏定義又稱為宏代換、宏替換,簡稱「宏」。
格式:
#define標識符 字元串
其中的標識符就是所謂的符號常量,也稱為「宏名」。
預處理(預編譯)工作也叫做宏展開:將宏名替換為字元串。
掌握"宏"概念的關鍵是「換」。一切以換為前提、做任何事情之前先要換,准確理解之前就要「換」。
即在對相關命令或語句的含義和功能作具體分析之前就要換:
例:
#define PI 3.1415926
把程序中出現的PI全部換成3.1415926
2.帶參數的宏:
除了一般的字元串替換,還要做參數代換
格式:
#define 宏名(參數表) 字元串
例如:#define S(a,b) a*b
area=S(3,2);第一步被換為area=a*b; ,第二步被換為area=3*2;
二. 文件包含一個文件包含另一個文件的內容
格式:
#include "文件名"
或
#include <文件名>
編譯時以包含處理以後的文件為編譯單位,被包含的文件是源文件的一部分。
編譯以後只得到一個目標文件.obj
被包含的文件又被稱為「標題文件」或「頭部文件」、「頭文件」,並且常用.h作擴展名。
修改頭文件後所有包含該文件的文件都要重新編譯
頭文件的內容除了函數原型和宏定義外,還可以有結構體定義,全局變數定義:
Ⅳ c語言中,以"#"開頭的控制行都是預處理命令嗎
對的。
預處理(或稱預編譯)是指在進行編譯的第一遍掃描(詞法掃描和語法分析)之前所作的工作。預處理指令指示在程序正式編譯前就由編譯器進行的操作,可放在程序中任何位置。
預處理是C語言的一個重要功能,它由預處理程序負責完成。當對一個源文件進行編譯時,系統將自動引用預處理程序對源程序中的預處理部分作處理,處理完畢自動進入對源程序的編譯。
C語言提供多種預處理功能,主要處理#開始的預編譯指令,如宏定義(#define)、文件包含(#include)、條件編譯(#ifdef)等。合理使用預處理功能編寫的程序便於閱讀、修改、移植和調試,也有利於模塊化程序設計。
Ⅳ include<stdio.h>是什麼意思
include<stdio.h>是c語言的一條預編譯命令。凡是以#開頭的行都會在程序被編譯之前由c預處理程序(c preprocesssor)進行處理。他的功能是告訴預編譯程序將標准輸入輸出頭文件(Standard input/output header,即<stdio.h>)包含到源程序中。因為編譯器需要這個頭文件中的信息來幫助它編譯程序中的出現的標准輸入輸出庫函數(如printf)調用。
Ⅵ c語言編譯預處理
編譯,編譯程序讀取源程序(字元流),對之進行詞法和語法的分析,將高級語言指令轉換為功能等效的匯編代碼,再由匯編程序轉換為機器語言,並且按照操作系統對可執行文件格式的要求鏈接生成可執行程序。
如果用一張圖來表示:
讀取c源程序,對其中的偽指令(以#開頭的指令)和特殊符號進行處理
[析] 偽指令主要包括以下四個方面
(1)宏定義指令,如#define Name TokenString,#undef等。對於前一個偽指令,預編譯所要做的是將程序中的所有Name用TokenString替換,但作為字元串常量的Name則不被替換。對於後者,則將取消對某個宏的定義,使以後該串的'出現不再被替換。
(2)條件編譯指令,如#ifdef,#ifndef,#else,#elif,#endif,等等。這些偽指令的引入使得程序員可以通過定義不同的宏來決定編譯程序對哪些代碼進行處理。預編譯程序將根據有關的文件,將那些不必要的代碼過濾掉
(3)頭文件包含指令,如#include "FileName"或者#include 等。在頭文件中一般用偽指令#define定義了大量的宏(最常見的是字元常量),同時包含有各種外部符號的聲明。採用頭文件的目的主要是為了使某些定義可以供多個不同的C源程序使用。因為在需要用到這些定義的C源程序中,只需加上一條#include語句即可,而不必再在此文件中將這些定義重復一遍。預編譯程序將把頭文件中的定義統統都加入到它所產生的輸出文件中,以供編譯程序對之進行處理。
包含到c源程序中的頭文件可以是系統提供的,這些頭文件一般被放在/usr/include目錄下。在程序中#include它們要使用尖括弧(<>)。另外開發人員也可以定義自己的頭文件,這些文件一般與c源程序放在同一目錄下,此時在#include中要用雙引號("")。
(4)特殊符號,預編譯程序可以識別一些特殊的符號。例如在源程序中出現的LINE標識將被解釋為當前行號(十進制數),FILE則被解釋為當前被編譯的C源程序的名稱。預編譯程序對於在源程序中出現的這些串將用合適的值進行替換。
注意:
預編譯程序所完成的基本上是對源程序的「替代」工作。經過此種替代,生成一個沒有宏定義、沒有條件編譯指令、沒有特殊符號的輸出文件。這個文件的含義同沒有經過預處理的源文件是相同的,但內容有所不同。下一步,此輸出文件將作為編譯程序的輸出而被翻譯成為機器指令。