一、问题引入
在编程过程中,使用预处理指令最多的是:
-
#define BUFFER_MAX_SIZE 1024
//明示常量 -
#include "xxx.h"
//头文件包含
但其他预处理指令使用的稍微少点,例如:#ifdef
#else
#endif
#ifndef
#if
#elif
#line
#error
#pragma
。
二、解决过程
2-1 避免用户自定义头文件重复包含
若头文件:user1.h 中已经包含头文件:user.h了,但在源文件src.c中进行如下包含操作便会报错:
src.c
#include "user1.h"
#include "user.h"
//...
原因:因为预处理器对头文件user1.h展开的所有头文件都会包含进来,包括user.h,然而用户在源文件中又一次把user.h包含进来
正确处理user.h的重复包含可以这样处理:
user.h
#ifndef __USER_H__
#define __USER_H__
//...
#endif
2-2 debug模式
在编写代码过程少不了进行测试打印输出,以及来回修改。一般人可能会来来回回进行编写、删除,但其实可以通过条件编译解决,只需要一个宏开关。
#include <stdio.h>
#define DEBUG
int main(void)
{
int list[5] = {1, 2, 3, 4, 5};
#ifdef DEBUG // 若宏DEBUG定义了,则编译如下代码
printf("debug mode:\n");
#endif // 结束一个if预处理
for (int i = 0; i < 5; ++i)
{
printf("list[%d]:%d\n", i, list[i]);
}
return 0;
}
若想取消debug mode,仅需要注释语句:#define DEBUG
即可
三、反思总结
无
四、参考引用
C Primer Plus (第6版) 中文版
标签:__,头文件,编译,user,条件,DEBUG,include,预处理 From: https://www.cnblogs.com/caojun97/p/17476958.html