以如下代码为例:
//head.h
#ifndef __HEAD_H__
#define __HEAD_H__#define NUM1 10
#define NUM2 20
#endif//sum.c
#include <stdio.h> //直接在标准库中查找
#include "head.h" //先在工作目录中查找,找不到再去标准库中查找
#define DEBUG //去掉这一行,gcc编译时采用-D参数即可,生成最终文件时,不用-D参数。
int main(void)
{int a = NUM1;int aa;int b = NUM2;int sum = a + b;// 小盆友: 这是一个加法运算
#ifdef DEBUGprintf("The sum value is: %d + %d = %d\n", a, b, sum);
#endifreturn 0;
}
如上段代码中,有两个文件,一个头文件head.h和一个c语言源代码文件sum.c。其中main函数中的printf函数只是为了验证程序的正确性而设置的,起调试作用,在最终的代码中需要删除这样的代码! 因此在调试过程中,需要该条语句参与编译,即DEBUG需要进行宏定义。比较麻烦的方法就是,在调试完毕生成最终的可执行程序时,手动将sum.c文件中的第三行#define DEBUG 注释掉即可(//#define DEBUG )。其实在gcc编译过程中采用-D参数就表示对某个变量进行宏定义,即 -D DEBUG。 因此直接可以去掉这一行,在调试过程中带上-D参数:gcc –pipe –Wall -pedantic sum.c -D DEBUG -o sum 在生成最终的可执行代码时,就不用带-D参数了。