美文网首页
宏与常量

宏与常量

作者: 3a169b0787bc | 来源:发表于2017-06-14 15:08 被阅读21次

这次在集成百度导航的时候 发现与工程中的一个三方冲突了。然后发现是变量名冲突了。
https://segmentfault.com/a/1190000009610305

想想在平日的代码中,或项目中其他人的代码中,我们经常有滥用常量的经历,一般稍微注意点可能就会抽出来写个宏,或者定义一些const常量。但是相比之下我是更倾向用const来定义。
其实许多博文已经分析的很清楚了, const常量与define宏定义的区别

就我个人经验来说,
const定义常量,会包含类型信息,更清楚的描述常量的含义.
一般我们会用staticextern来修饰const

static修饰符意味着该变量仅在此变量的编译单元,编译器每收到一个编译单元 ,就会输出一份目标文件,在OC的语境下,编译单元一般指每个类的实现文件。
一般用于修饰作用域仅限于某类的变量。

extern修饰符实际上是告诉编译器在全局符号表中将会有一个该名字的符号,也就是说编译器无需查看其定义,即允许代码使用此常量.因为它知道当链接成二进制文件后,肯定能找到该常量。因为是全局使用,所以命名要格外注意。像上面的bug就是出现了冲突,也是作用域声明不清,或者说由于OC没有命名空间,所以一定要加上适当的前缀。
一般用于需要对外公开的某个常量,例如注册的通知。

关于宏是预处理阶段替换 下面有个文章举了个例子.最后avatar是啥?
#define avatar @"60"
if (false) {
#define avatar @"80"
}
宏定义和常量定义的区别
宏定义与常量的基本用法
iOS 宏(define)与常量(const)的正确使用
iOS 不要用宏来定义你的常量

相关文章

  • 一些小链接

    1、iOS 宏(define)与常量(const)的正确使用 iOS宏(define)与常量(const)的正确使...

  • 宏与常量

    这次在集成百度导航的时候 发现与工程中的一个三方冲突了。然后发现是变量名冲突了。https://segmentfa...

  • C++中的内联函数

    1、常量与宏回顾 C++中的const常量可以替代宏常数定义,如: const int A = 3; <===>...

  • iOS const,static,extern

    const:常量,当有字符串常量的时候,推荐使用const与宏的区别:1 .编译时刻:宏:预编译 const:...

  • 个人对宏定义命名规范的理解

    1.宏定义的命名规范 通用常量宏 私有常量宏 配置类常量宏 通用操作宏 模板宏 方法简写宏 特定类中的步骤简称 其...

  • #define const static

    iOS 宏(define)与常量(const)的正确使用

  • 六、C++ 内联函数分析

    1、常量与宏 C++中的const常量可以替代宏常数定义: 我们还可以利用宏来定义宏代码片段: 但是宏代码块不是函...

  • 浅谈const, static, extern

    废话不多说,直接上!!! const const常量与宏的区别,很多同学喜欢宏来定义常量,其实这里是不推荐的(苹果...

  • 宏定义与常量的基本用法

    宏定义 宏定义分为两种:带参定义与无参定义 带参定义 无参数定义 常量定义 常量定义也分为两种:全局与局部(相对整...

  • 关于extern引出的问题

    问题 项目中在.mm文件中使用宏: 报错: 解析 iOS的常量声明与定义 iOS中声明常量 定义常量 这个是iOS...

网友评论

      本文标题:宏与常量

      本文链接:https://www.haomeiwen.com/subject/xsyefxtx.html