#ifdef和#if defined的差别

注意两者都有个define的作用,区别在于使用方式上。前者的通常用法是:
#ifdef  XXX

....

#else

....

#endif

只能在两者中选择是否有定义。对于后者,常用法是:

#if defined xxx1

....

#elif defined xxx2

....

#elif defined xxx3

....

#endif

可以在多个中选择是否有定义.

#ifdef 和 #if defined 的区别在于,后者可以组成复杂的预编译条件,比如

#if defined (AAA) && defined (BBB)
xxxxxxxxx
#endif

#if defined (AAA) || VERSION > 12
xxxxxxxxx
#endif

而#ifdef 就不能用上面的用法,也就是说,当你要判断单个宏是否定义时
#ifdef 和 #if defined 效果是一样的,但是当你要判断复杂的条件时,只能用 #if defined 
时间: 2024-11-05 01:50:56

#ifdef和#if defined的差别的相关文章

#ifdef 和 #if defined 的区别 -- 转

#ifdef 和 #if defined 的区别在于,后者可以组成复杂的预编译条件,比如 #if defined (AAA) && defined (BBB) xxxxxxxxx #endif #if defined (AAA) || VERSION > 12 xxxxxxxxx #endif 而#ifdef 就不能用上面的用法,也就是说,当你要判断单个宏是否定义时 #ifdef 和 #if defined 效果是一样的,但是当你要判断复杂的条件时,只能用 #if defined

C++ #if #endif #define #ifdef #ifndef #if defined #if !defined详解

首先,让我们先从头文件开始,在很多头文件里,我们会看到这样的语句 #ifndef _MYHEADFILE_H #define _MYHEADFILE_H // .......语句...... #endif // _MYHEADFILE_H 为了避免同一个文件被include多次,我们常使用 #ifndef 进行判断,如果没有包含 _MYHEADFILE_H , 则使用#define 来定义一个宏 _MYHEADFILE_H , #endif 与#ifndef 首尾呼应,表示结束. 说到这里,我们

#ifdef和#if defined

#ifdef 和 #if defined 的区别在于,后者可以组成复杂的预编译条件 你要判断单个宏是否定义时#ifdef 和 #if defined 效果是一样的,但是当你要判断复杂的条件时,只能用 #if  

(五)c语言条件编译#ifdef与#if defined

c语言条件编译#ifdef与#if defined defined NAME是用来判断NAME是否被定义了(被用define定义了). #ifdef NAME == #if defined(NAME) #ifndef NAME == #if !defined(NAME) 但是在处理双重和多重判断时,defined的优势就显示出来了 #ifdef NAME1 #ifdef NAME2 ...... #endif #endif 可以写成 #if defined(NAME1) && define

#ifdef、#if defined、#ifndef的使用

1.#ifdef和#if defined 注意两者都有个define的作用,区别在于使用方式上.前者的通常用法是: #ifdef  X .... #else .... #endif 只能在两者中选择是否有定义.对于后者,常用法是: #if defined x1 .... #elif defined x2 .... #elif defined x3 .... #endif 可以在多个中选择是否有定义. 2.#ifndef的使用方法 这是 //if not defined的简写,是宏定义的一种,它是

C开发之----#if、#ifdef、#if defined之间的区别

#if的使用说明 #if的后面接的是表达式 #if (MAX==10)||(MAX==20) code... #endif 它的作用是:如果(MAX==10)||(MAX==20)成立,那么编译器就会把其中的#if 与 #endif之间的代码编译进去(注意:是编译进去,不是执行!!) #if defined的使用 #if后面接的是一个宏. #if defined (x) ...code... #endif 这个#if defined它不管里面的“x”的逻辑是“真”还是“假”它只管这个程序的前面的

#if、#ifdef、#if defined之间的区别(转载)

转自:http://www.yucoat.com/c_program/difference_if_ifdef_if_defined.html #if的使用说明 #if的后面接的是表达式 #if (MAX==10)||(MAX==20) code... #endif 它的作用是:如果(MAX==10)||(MAX==20)成立,那么编译器就会把其中的#if 与 #endif之间的代码编译进去(注意:是编译进去,不是执行!!) #if defined的使用 #if后面接的是一个宏. #if defi

C/C++预处理指令#define,#ifdef,#ifndef,#endif… (转)

本文转自博文C/C++预处理指令#define,#ifdef,#ifndef,#endif….这篇博文写得特别好,特转载. 本文主要记录了C/C++预处理指令,常见的预处理指令如下: #空指令,无任何效果 #include包含一个源代码文件 #define定义宏 #undef取消已定义的宏 #if如果给定条件为真,则编译下面代码 #ifdef如果宏已经定义,则编译下面代码 #ifndef如果宏没有定义,则编译下面代码 #elif如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #en

linux内核数据结构学习总结(undone)

本文旨在整理内核和应用层分别涉及到的数据结构,从基础数据结构的角度来为内核研究作准备,会在今后的研究中不断补充 目录 1. 进程相关数据结构 1) struct task_struct 2. 内核中的队列/链表对象 3. 内核模块相关数据结构 2) struct module 1. 进程相关数据结构 0x1: task_struct 我们知道,在windows中使用PCB(进程控制块)来对进程的运行状态进行描述,对应的,在linux中使用task_struct结构体存储相关的进程信息,task_