C——预编译

1. 预编译:在编译之前, 直接替换相应的代码文本
2. 编译:形成目标文件 .obj
3. 连接:将目标代码与C函数库连接合并,形成最终的EXE文件

头文件告诉编译器存在这样的一个函数,连接器负责找到这个函数
#include <stdio.h>//把代码包含进来
void main(){
#include "my.txt"
; getchar();
}

my.txt的内容为printf("%s","abcdafdafdafafdafd")

define 可以定义( 仅仅是文本替换) :
1.定义标示
#ifdef __cplusplus 表示支持C++ 语法
2.定义常数
#define MAX 100
3.定义“宏函数”
//__VA_ARGS__ 可变参数标示
#define log(args,...) printf(args,__VA_ARGS__);

##运算符
##运算符用于把参数连接到一起。预处理程序把出现在##两侧的参数合并成一个符号。看下面的例子:

#defineNUM(a,b,c)a##b##c


#error指令将使编译器显示一条错误信息,然后停止编译。
#line指令可以改变编译器用来指出警告和错误信息的文件号和行号。
#pragma指令没有正式的定义。编译器可以自定义其用途。典型的用法是禁止或允许某些烦人的警告信息。

防止文件的重复引入
#pragma once 头文件只被包含一次,让编译器自动处理好循环包含的问题

条件编译
1:情况1:
#ifdef _XXXX
...程序段1...
#else
...程序段2...
#endif
这表明如果标识符_XXXX已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。
例: 
#define NUM
.............
.............
.............
#ifdef NUM
printf("之前NUM有过定义啦!:) ");
#else
printf("之前NUM没有过定义!:( ");
#endif
}
如果程序开头有#define NUM这行,即NUM有定义,碰到下面#ifdef NUM的时候,当然执行第一个printf。否则第二个printf将被执行。
我认为,用这种,可以很方便的开启/关闭整个程序的某项特定功能。
2:情况2:  
#ifndef _XXXX 
...程序段1... 
#else 
...程序段2... 
#endif
这里使用了#ifndef,表示的是if not def。当然是和#ifdef相反的状况(如果没有定义了标识符_XXXX,那么执行程序段1,否则执行程序段2)。例子就不举了。
3:情况3:
#if 常量 
...程序段1...
#else
...程序段2...
#endif 
这里表示,如果常量为真(非0,随便什么数字,只要不是0),就执行程序段1,否则执行程序段2。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值