目录
一、头文件的引用 #include
1. 标准库的头文件
#include <filename.h>
此格式用来引用标准库的头文件,编译器将从标准库目录开始搜索
。
2.
非标准库的头文件
#include “filename.h”
此格式用来引用非标准库的头文件,编译器将从用户的工作目录开始搜索。
如果该头文件未找到,编译器就像查找库函数头文件一样在标准库目录搜索头文件。
(所以说对于库文件也可以使用” “引用,但这样搜索范围大,效率较低)
3. 嵌套文件包含
引用头文件时可能会出现嵌套文件包含的场景:
test.c 文件中引用了两次 comm.h,导致了头文件内容被重复引用。重复包含会增大程序大小,重复编译增加编译时间。
这时需要用
条件编译
解决此问题。
二、条件编译 #ifndef #define #endif
条件编译:根据条件判断是否编译语句。
1. 主要用来避免头文件的重复引入
//每个头文件开头这样写,即可避免重复引用
#ifndef __TEST_H__
#define __TEST_H__
...//头文件内容
#endif
#ifndef :如果未定义 __TEST_H__(与头文件名 test.h 对应),编译后续语句,否则放弃编译。
#define:进入编译,定义 __TEST_H__,若存在第二次引用该头文件,__TEST_H__ 已定义,则放弃此次编译。
#endif:和 #ifndef 配合使用,如果丢失#endif,可能会报错。
如此就避免了头文件的重复引用。
2.其他条件编译指令
1.
#if 常量表达式
...
#endif
2.多分支
#if 常量表达式
...
#elif 常量表达式
...
#else 常量表达式
...
#endif
3.判断是否定义
#if defined(symbol)
...
#endif
#ifdef symbol
...
#endif
#if !defined(symbol)
...
#endif
#ifndef symbol
...
#endif
4.嵌套条件指令
#if defined(OS_UNIX)
#ifdef OPTION1
unix_version_option1();
#endif
#ifdef OPTION2
unix_version_option2();
#endif
#elif defined(OS_MSDOS)
#ifdef OPTION2
msdos_version_option2();
#endif
#endif
版权声明:本文为honortech原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。