惧留孙网

juliusun.com

在线教程 > C语言教程 > 预处理指令之if

预处理指令之if

第 48/50 节 冥河C语言教程


预处理if指令能够实现选择性编译。C语言判断语句也有个if,本节讲的是预处理指令if,注意区别。

预处理if指令用法如下:

#if 常量表达式 程序段1 #else 程序段2 #endif

如果程序段2为空,else指令可以省略。但是if和endif作为开始和结束指令是绝对不能省略的。省略else指令时格式如下:

#if 常量表达式 程序段1 #endif

if指令,如果常量表达式成立,则编译程序段1,否则执行程序段2(如果存在)。

endif指令可以用来结束ifdef、ifndef、if指令。

常量表达式可以是宏定义的常量,也可以是其它常量表达式。常量表达式为一个单一数字,则0为假,非0为真(严格来说表达式值也是数字)。

举例说明,假设程序员甲写了一些头文件和源文件,分享给其它程序员。为了方便,程序员甲给头文件通过宏定义了版本号。当程序员甲又书写完一个新版本的源文件,此版本的源文件,需要新版头文件支持,那么程序员甲就可以通过if指令来提示其它程序员了。

假设程序员甲写的头文件名为my.h。my.h代码如下:


  1. //my.h
  2. #define MY_H_VER 5  //通过宏定义头文件版本号为5.5,宏属于预处理,不需要编译器分配空间
  3. /*假设此头文件中封装了很多代码...*/

源文件代码如下:


  1. #include<stdio.h>
  2. #include"my.h" //引用当前目录下的my.h头文件
  3. int main( )
  4. {
  5. #if MY_H_VER<6 //源文件代码最低需要6版本头文件,编译此文件的其它程序员低版本头文件,会有错误提示
  6. puts("您使用的my.h头文件版本太低,可能导致代码编译或运行出错!");
  7. #endif //结束if指令
  8. //其它代码...
  9. getchar( ) ; //使程序暂停一下
  10. return 0;
  11. }

假设某程序使用程序员甲源文件同时没有更新my.h头文件,则会输出类似如下信息:

Pic

效果图仅供参考。

作者:冥河 QQ:3304576112
交流QQ群:554701039 C语言讲课群
本教程内容由本站保留版权,请勿复制传播
抖音
©2015-2024 惧留孙网 juliusun.com

京ICP备15039193号-1

首页 教程 下载 文章 聊天 我的