#define #if #ifdef #ifndef 作用和区别
2016-12-07 09:11
453 查看
#define
#define用来进行定义
#define kTabBar_Height 49.0f #define kString @"哈哈哈"1
2
1
2
#if
#if 常量表达式 //程序段1 #else // 程序段2 #endif1
2
3
4
5
1
2
3
4
5
它的作用是,如常量表达式的值为真(非0),则对程序段1 进行编译,否则对程序段2进行编译。因此可以使程序在不同条件下,完成不同的功能。
#ifdef
#ifdef <标识符> //程序段1 #else //程序段2 #endif1
2
3
4
5
1
2
3
4
5
它的作用是:当标识符已经被定义过,则对程序段1进行编译,否则编译程序段2。
#ifndef
#ifndef <标识符> //程序段1 #else //程序段2 #endif1
2
3
4
5
1
2
3
4
5
只是第一行与前一种形式不同:将
#ifdef改为
#ifndef。它的作用是:若标识符未被定义则编译程序段1,否则编译程序段2。这种形式与第一种形式的作用相反。
但是也是有区别的一般的, 条件指示符
#ifndef检查预编译常量在前面是否已经被定义。#ifndef 的最主要目的是防止头文件的重复包含和编译。
如果#ifndef…#endif在头文件中,千万不要忽略了头件的中的
#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。
所以, 还是把头文件的内容都放在
#ifndef和
#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的:
#ifndef <标识> #define <标识> ...... ...... #endif #endif1
2
3
4
5
6
1
2
3
4
5
6
<标识>在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:
stdio.h
#ifndef _STDIO_H_ #define _STDIO_H_ ...... #endif #endif1
2
3
4
5
1
2
3
4
5
顶
0
相关文章推荐
- 84.#define #if #ifdef #ifndef 作用和区别
- #define #if #ifdef #ifndef 作用和区别
- C++ #if #endif #define #ifdef #ifndef #if defined #if !defined详解
- #ifndef #define #ifdef 的区别与联系
- ifndef/define/endif 和 #ifdef 、#if 作用和用法
- #ifdef #ifndef #if #include #line #pragma #define命令
- C++ #if #endif #define #ifdef #ifndef #if defined #if !defined详解
- #if #ifdef #if defined 区别
- #if define (abc)与#ifdef abc 有什么区别?
- #ifdef #if 等宏的作用和用法
- #if #ifdef #ifndef
- C++中#if #ifdef 的作用
- 条件编译#ifdef MACRO_A和#if defined(MACRO_A)的区别
- C++中#if #ifdef 的作用(转bigpretty的专栏)
- c,c++里面,头文件里面的ifndef /define/endif的作用
- c,c++里面,头文件里面的ifndef /define/endif的作用
- c,c++里面,头文件里面的ifndef /define/endif的作用
- 关于define,ifdef,ifndef和undefine
- #pragma once 和 #ifndef ... #define ... #endif 的区别【转载】
- C++中#if #ifdef的作用