#ifndef OSKIT
#define OSKIT //这两句的具体含义是什么?
#define STATS
#ifdef STATS //这两句的具体含义是什么?这是一个C头文件中的代码,知道是用于条件编译,但一直不明白确切含义。
还有个问题:这些语句算宏吗?
多谢!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
第一个一般用于防止头文件重复引用。字面意思是如果没有定义xxx,那么定义xxx 也就是说第一遍执行这一段的时候会定义xxx宏,第二次执行相同语句的话因为刚才已经定义过了,就无法满足ifndef自然不会执行块内语句。 用法如下
#ifndef ABC_H //如果已经定义了ABC_H到这里就会引发判断,就不会编译下面的代码
#define ABC_H //如果从未定义过,我们就定义,这两个结合使用可以保证被包含的内容只被编译器执行一次
//头文件内容
#endif
第二个一般用于屏蔽语句。其实你吧define那句去掉了再看的话意思就是如果定义了states下面的语句就有效,否则救无效 比如我们经常用这样的方式去注释代码
#if 0
//无用的代码
#endif
换过来,如果用#if 1的话就是代表这段代码有效了。 通过这种方式,你就可以通过编译时定义不同的宏的方式来让不同代码生效了 再举个例子:跨平台的c语言代码常有这样的片段
全选复制放进笔记#ifdef LINUX_KERNEL
//linux下的api
#endif
#ifdef WIN32
//windows下的api
#endif