#if,#ifdef和#if defined
来源:互联网 发布:毛姆 知乎 编辑:程序博客网 时间:2024/06/09 16:09
#if和#ifdef使用问题
#define TARGET_LITTLE_ENDINA 1
#define TARGET_BIG_ENDINA 0
#ifdef TARGET_LITTLE_ENDINA
call little endina
#else
call big endina
#endif
上面的今天写的代码,发现我不管把TARGET_LITTLE_ENDINA和TARGET_BIG_ENDINA定义成0或者1,调用的都是little endina函数,一直找不到问题所在,看看代码也没有什么问题。经过分析和查找相关的文档,原来是自己没有理解#if和#ifdef之间的区别。
对于#if需要是一个表达式,如果表达式为1则调用#if下面的代码。
对于#ifdef需要的只是这个值有没有定义,并不关心这个值是什么。
表明之间的区别问题就变得非常的容易,只要把上述代码中的#ifdef改成#if就可以达到目的。
从这个问题发现自己在一些基本的C或C++的语法上面还是有很大的不足,到网上查找一些书籍,对这方面介绍的也不是特别多,相比而言,MSDN还是比较全面。平时比较痛恨MS的,不过平心而论,MS对于开发软件工具和文档做的还是相当不错,尤其是开发文档方面非常全面,自己在项目SDK的开发过程中也需要加强这方面的工作。
#define TARGET_LITTLE_ENDINA 1
#define TARGET_BIG_ENDINA 0
#ifdef TARGET_LITTLE_ENDINA
call little endina
#else
call big endina
#endif
上面的今天写的代码,发现我不管把TARGET_LITTLE_ENDINA和TARGET_BIG_ENDINA定义成0或者1,调用的都是little endina函数,一直找不到问题所在,看看代码也没有什么问题。经过分析和查找相关的文档,原来是自己没有理解#if和#ifdef之间的区别。
对于#if需要是一个表达式,如果表达式为1则调用#if下面的代码。
对于#ifdef需要的只是这个值有没有定义,并不关心这个值是什么。
表明之间的区别问题就变得非常的容易,只要把上述代码中的#ifdef改成#if就可以达到目的。
从这个问题发现自己在一些基本的C或C++的语法上面还是有很大的不足,到网上查找一些书籍,对这方面介绍的也不是特别多,相比而言,MSDN还是比较全面。平时比较痛恨MS的,不过平心而论,MS对于开发软件工具和文档做的还是相当不错,尤其是开发文档方面非常全面,自己在项目SDK的开发过程中也需要加强这方面的工作。
#if,#ifdef和#if defined
对于条件编译#if,#ifdef和#if defined这些,深究起来还是有些意思
#if要求是一个表达式,为真则执行以下代码,
#ifdef则只要求是否定义,并不关心这个值是什么。
#if defined则是#if和#define的连用。
比如:
#if 0
/* some code here*/
/* commented */
#endif
#ifdef __MMI_MESSAGES_CLUB__
#i nclude "MessagesResDef.h"
#endif
#if defined( __MMI_IRDA_SUPPORT__ )
#i nclude "ConnectivityResDef.h "
#endif
#if defined还可以串连多个条件:
#if defined( __MMI_MYAPP1_SUPPORT__ ) || defined( __MMI_MYAPP2_SUPPORT__ )
#i nclude "ConnectivityResDef.h "
#endif
对于条件编译#if,#ifdef和#if defined这些,深究起来还是有些意思
#if要求是一个表达式,为真则执行以下代码,
#ifdef则只要求是否定义,并不关心这个值是什么。
#if defined则是#if和#define的连用。
比如:
#if 0
/* some code here*/
/* commented */
#endif
#ifdef __MMI_MESSAGES_CLUB__
#i nclude "MessagesResDef.h"
#endif
#if defined( __MMI_IRDA_SUPPORT__ )
#i nclude "ConnectivityResDef.h "
#endif
#if defined还可以串连多个条件:
#if defined( __MMI_MYAPP1_SUPPORT__ ) || defined( __MMI_MYAPP2_SUPPORT__ )
#i nclude "ConnectivityResDef.h "
#endif
#ifndef _HEAD_H
#define _HEAD_H
//预处理防止头文件重复包含,亦可用#pragma once
#define _HEAD_H
//预处理防止头文件重复包含,亦可用#pragma once
.
.
.
#endif
0 0
- #if,#ifdef和#if defined
- #if,#ifdef和#if defined
- #if,#ifdef和#if defined
- #ifdef 和 #if defined
- #ifdef和#if defined
- #if,#ifdef,#if defined
- #if #ifdef #if defined
- #if/#if defined/#ifdef
- #ifdef #if defined #ifndef和#if !defined区别
- #if #ifdef #if defined 区别
- #if #ifdef #if defined 区别
- ifdef 与if defined
- ifdef 与if defined
- #ifdef 与#if defined
- #ifdef and #if defined
- #ifdef vs #if defined
- #ifdef 与#if defined
- #ifdef vs #if defined
- U3d中xml文件的存储和读取,经典
- Node.js GET/POST请求
- python的模块、包、类
- linux下文件夹的创建、复制、剪切、重命名、清空和删除命令
- Android通过tcpdump抓包
- #if,#ifdef和#if defined
- IOS图像处理之 coreImage.
- Android中App安装位置详解
- 传播易:如何看待软文的发展
- shell脚本处理字符串常用方法
- iOS 静态类库项目的建立与使用
- 设计模式——享元设计模式
- Java实现坦克大战(1990有木有勾起童年回忆)
- [水]ZOJ1163