#define
#define
用来进行定义
- 1
- 2
- 1
- 2
#if
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
它的作用是,如常量表达式的值为真(非0),则对程序段1 进行编译,否则对程序段2进行编译。因此可以使程序在不同条件下,完成不同的功能。
#ifdef
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
它的作用是:当标识符已经被定义过,则对程序段1进行编译,否则编译程序段2。
#ifndef
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
只是第一行与前一种形式不同:将#ifdef
改为#ifndef
。它的作用是:若标识符未被定义则编译程序段1,否则编译程序段2。这种形式与第一种形式的作用相反。
但是也是有区别的一般的, 条件指示符#ifndef
检查预编译常量在前面是否已经被定义。#ifndef 的最主要目的是防止头文件的重复包含和编译。
如果#ifndef…#endif在头文件中,千万不要忽略了头件的中的#ifndef
,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。
所以, 还是把头文件的内容都放在#ifndef
和#endif
中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的:
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
<标识>在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
-
顶
- 0