预编译指令跨平台的作用

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

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


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


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


预编译指令可以写在数组或循环内(可写在任何位置,因为预编译的时候会把满足条件的代码留下,不满足条件的扔掉):(下面是套接字选项检查程序的声明)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值