预处理功能主要包括宏定义,文件包含,条件编译三部分。分别对应宏定义命令,文件包含命令,条件编译命令三部分实现。
预处理过程读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行响应的转换。预处理过程还会删除程序中的注释和多余的空白字符。
指令 用途
# 空指令,无任何效果
#include 包含一个源代码文件
#define 定义宏
#undef 取消已定义的宏
#if 如果给定条件为真,则编译下面代码
#ifdef 如果宏已经定义,则编译下面代码
#ifndef 如果宏没有定义,则编译下面代码
#elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码
#endif 结束一个#if……#else条件编译块
#error 停止编译并显示错误信息
#else 略
#error 指令将使编译器显示一条错误信息,然后停止编译。
贴上有用的代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> #define SIX 6 #define SEVEN 7 #define Cube(x) (x)*(x)*(x) #define VERSION "tzs" #define PASTE(n) "最终胜利者是:"#n #define NUM(a,b,c) a##b##c #define STR(a,b,c) a##b##c #define DEBUG 1 int main() { int i; i = SIX + SEVEN; printf("i = %d\n",i); i = (SIX * SEVEN); printf("i = %d\n",i); i = Cube(3); printf("i = %d\n",i); printf("%s",VERSION); printf("%s",PASTE(桃子)); puts(PASTE(yy/)); puts(PASTE(xx)); printf("%d\n",NUM(1,2,3)); //printf("%s\n",STR("aa","bb","cc")); #if DEBUG printf("Debugging\n"); printf("Debugging2222\n"); #endif printf("Running\n"); #if defined DEBUG printf("yes\n"); #endif #if !defined JJ printf("no JJ\n"); #endif }
原文地址:http://www.cnblogs.com/hnfxs/p/3834283.html