码迷,mamicode.com
首页 > 其他好文 > 详细

预编译指令跨平台的作用

时间:2015-04-13 11:04:28      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:c++      预编译指令   编译器   xcode   

程序的编译过程可以分为预处理、编译、汇编三部分,其中预处理是首先执行的过程,预处理过程扫描程序源代码,对其进行初步的转换,产生新的源代码提供给编译器。

预处理过程读入源代码之后,会检查代码里包含的预处理指令,完成诸如包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码的工作。


通过预编译指令,只会把满足条件的代码编译进来,其他代码不参与编译


1, 指令

预编译指令以 #开头,整条语句构成一条预编译指令

2, 作用

C/C++ 语言的预处理主要有三个方面的内容: 1.宏定义; 2.文件包含; 3.条件编译。 

3,  一些常用的预编译指令

#include   

#define #undef

#define指令定义了一个标识符及一个串,标识符称为宏名,源程序中宏名的每次出现都会用其定义的串进行替换,称为宏替换。

#undef指令取消一个已定义的宏

#if #elif #else #endif(详解)

跨平台经常用到一下代码,这可以写到函数内部或外部

#if defined(WP8)
		...
#elif defined(ANDROID)
		...			
	#elif defined(IOS)
		...
	#endif

这样根据不同的平台,编译器会选择不同的代码来编译,扔掉其他平台的代码。


那么 WP8 ANDROID IOS 这几个预定义宏是如何定义的呢

XCode 下预定义宏方法(只需要在这里面添加IOS 宏,这样编译运行或打包就只会编译IOS下面的代码 )

http://blog.csdn.net/tutuboke/article/details/44855777


eclipse android预定义宏的方法(这样只编译 条件编译指令 #elif defined(ANDROID) 下代码,编译的*.so文件不会包含其他平台的代码)  

需要在编译so文件的 *.mk文件里面添加    android MK文件详解

LOCAL_CFLAGS +=-DANDROID    等价于在C/C++ 中得   #define ANDROID


VS  wp8 设定预编译指令方法:(这样就只会编译 条件编译指令 WP8 下面的代码)

项目->属性->c/c++ ->预处理器->预处理器定义


#ifdef  #ifndef  #endif

#ifndef MYHEAD_H
#define MYHEAD_H
	#include "myHead.h"
#endif



预编译指令跨平台的作用

标签:c++      预编译指令   编译器   xcode   

原文地址:http://blog.csdn.net/tutuboke/article/details/45021181

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!