C語言細節知識(四)

2021-10-06 10:05:22 字數 1336 閱讀 4412

#if 整型常量表示式1

程式段1

#elif 整型常量表示式2

程式段2

#elif 整型常量表示式3

程式段3

#else

程式段4

#endif

它的意思是:如常「表示式1」的值為真(非0),就對「程式段1」進行編譯,否則就計算「表示式2」,結果為真的話就對「程式段2」進行編譯,為假的話就繼續往下匹配,直到遇到值為真的表示式,或者遇到 #else。這一點和 if else 非常類似。

需要注意的是,#if 命令要求判斷條件為「整型常量表示式」,也就是說,表示式中不能包含變數,而且結果必須是整數;而 if 後面的表示式沒有限制,只要符合語法就行。這是 #if 和 if 的乙個重要區別。

#include

intmain()

#ifdef  巨集名

程式段1

#else

程式段2

#endif

它的意思是,如果當前的巨集已被定義過,則對「程式段1」進行編譯,否則對「程式段2」進行編譯。

#include

#include

intmain()

#ifndef 巨集名

程式段1

#else

程式段2

#endif

與 #ifdef 相比,僅僅是將 #ifdef 改為了 #ifndef。它的意思是,如果當前的巨集未被定義,則對「程式段1」進行編譯,否則對「程式段2」進行編譯,這與 #ifdef 的功能正好相反。

#if 後面跟的是「整型常量表示式」,而 #ifdef 和 #ifndef 後面跟的只能是乙個巨集名,不能是其他的。

#error error_message
#error 指令用於在編譯期間產生錯誤資訊,並阻止程式的編譯。

#ifdef win32

#error this programme cannot compile at windows platform

#endif

#ifndef __cplusplus

#error 當前程式必須以c++方式編譯

#endif

C語言中細節知識整理

puts a 輸出字串 a的定義為 char a 10 gets a a的定義同上,輸入字串,類似於scanf strcat str1,srt2 連線字串的功能 把str2接在str1後面 strcpy str1,str2 把字串str2賦給str1 strncpy str1,str2,n 把str...

C語言細節

參考 注釋必須和 一起維護,不應該描述顯而易見的事,或把別的地方已說清楚的東西在說一遍。字面常量沒有語義,也沒有真正的記憶體位址。所以不可以取其位址,也不可以用於初始化普通引用,例如 long r1 40000 但是const long r1 40000 卻是合法的。所以,盡量不要使用字面常量,而應...

C語言細節

a b 先賦值再自增 a b先自增再賦值 float 6 4是1.500000 float 6 4 是1.000000 原始檔.c 目標程式.obj 執行程式.exe 都是二進位制檔案 源程式以ascii 形式存於文字檔案 c程式演算法可無輸入必須要有輸出 三種基本結構可以完成任何複雜的任務 大括號...