#define Fbw(f) f ## _fbw() C语言中的 ##是什么意思
作者:fly 发布于:2014-5-10 11:08 分类:嵌入式
#ifdef FBW #include "firmwares/fixedwing/main_fbw.h" #define Fbw(f) f ## _fbw() #else #define Fbw(f) #endif //AP #ifdef AP #include "firmwares/fixedwing/main_ap.h" #define Ap(f) f ## _ap() #else #define Ap(f) #endif int main( void ) { Fbw(init); Ap(init);
以上代码片段取自PPZ飞控源代码
最后的含义Fbw即如果定义使用FBW,则执行函数init_fbw();如果没有定义使用,则此处没有执行任何东西。
另外类似的还有
#define Conn(x,y) x##y #define ToChar(x) #@x #define ToString(x) #x x##y表示什么?表示x连接y,举例说: int n = Conn(123,456); 结果就是n=123456; char* str = Conn("asdf", "adf")结果就是 str = "asdfadf"; 怎么样,很神奇吧 再来看#@x,其实就是给x加上单引号,结果返回是一个const char。举例说: char a = ToChar(1);结果就是a='1'; 做个越界试验char a = ToChar(123);结果是a='3'; 但是如果你的参数超过四个字符,编译器就给给你报错了!error C2015: too many characters in constant :P 最后看看#x,估计你也明白了,他是给x加双引号 char* str = ToString(123132);就成了str="123132";
文章出自www.forwhat.cn
日历
分类
存档
- 2018年3月(1)
- 2017年9月(1)
- 2017年7月(2)
- 2017年5月(1)
- 2017年3月(2)
- 2017年2月(6)
- 2017年1月(9)
- 2016年12月(13)
- 2016年11月(4)
- 2016年8月(17)
- 2016年7月(4)
- 2016年3月(1)
- 2016年2月(2)
- 2015年12月(4)
- 2015年10月(5)
- 2015年9月(1)
- 2015年8月(1)
- 2015年6月(2)
- 2015年5月(4)
- 2015年4月(1)
- 2015年3月(4)
- 2015年2月(2)
- 2015年1月(24)
- 2014年12月(3)
- 2014年10月(5)
- 2014年9月(5)
- 2014年8月(4)
- 2014年7月(13)
- 2014年6月(18)
- 2014年5月(20)
- 2014年4月(24)
- 2014年3月(90)
- 2014年2月(121)
- 2014年1月(11)
最新评论
- qq
哈 - AdOnCn
很好!感谢! - FlyLu
fly您好,看到你写的文章很不错,也很佩... - 地铁诡事
[给力] - 婚嫁百科
如果有爱,如果有结局! - 安安博客
看不懂 - wys.me
博主好,请教个问题哈。 怎么修改vis... - 知道91博客
哈哈,这个算是编程很基础很基础的了吧 - 婚嫁百科
晕死,怎么都不会显示出来的啊 - 小俊
看不懂
发表评论: