示例1:
#include <stdio.h> #include <stdlib.h> #define DEBUG int main(void) { int i = 0; char c; while(1) { i++; c = getchar(); if('\n' != c) { getchar(); } if('q' == c || 'Q' == c) { #ifdef DEBUG//判断DEBUG是否被定义了 printf("We get:%c,about to exit.\n",c); #endif break; } else { printf("i = %d",i); #ifdef DEBUG printf(",we get:%c",c); #endif printf("\n"); } } printf("Hello World!\n"); return 0; } /*#endif用于终止#if预处理指令。*/
ifdef 和 #ifndef
#include <stdio.h> #define DEBUG main() { #ifdef DEBUG printf("yes "); #endif #ifndef DEBUG printf("no "); #endif } //#ifdefined等价于#ifdef; //#if!defined等价于#ifndef其他一些指令
#error指令将使编译器显示一条错误信息,然后停止编译。 #line指令可以改变编译器用来指出警告和错误信息的文件号和行号。 #pragma指令没有正式的定义。编译器可以自定义其用途。典型的用法是禁止或允许某些烦人的警告信息。 小结:预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作。说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译。这样做的好处是,经过处理后的代码,将会变的很精短。