我想知道宏是否只有任何编程语言的优点。由于必须有限制,我们可以创建宏,并使用频率。
假设我们在一个类中创建100个宏并将其导入100个应用程序项目类中。这是一种正确的方法吗?
答案 0 :(得分:2)
#define
对以下内容非常有用:
#include
C和C ++标题,#import
ObjC标题)UIKIT_EXTERN
),必须在预处理期间解决。NS_AVAILABLE_IOS()
),必须在预处理期间解析。对于其他一切,有一种替代方案可以帮助您避免头痛。
假设我们在一个类中创建100个宏并将其导入100个应用程序项目类中。这是一种正确的方法吗?
不 - 那是可怕的:)
<强>缺点强>
有很多。很多时候,人类和程序(编译器,解析器,索引器)都很难理解程序。这是引入错误的好方法,并完全替换不相关程序的文本(通过简单的#import
)。几乎所有东西都有更多的现代替代品(例如函数,内联,typedef,常量,枚举) - 让编译器让你的生活更轻松!
答案 1 :(得分:2)
#define
是预处理器宏。你没有在类中创建宏,因为宏在使用时是文本扩展的,但它的定义不是类的一部分,即使你碰巧在类中用词法编写它。
另外,你没有import
其他类中的类,你import
类声明标题。即使您多次指定,每个编译单元也只会发生一次导入。因此,每个编译单元中每个宏最多只能有一个声明,因为宏只是预处理器,所以它只会在编译的早期阶段出现。
您并不是说您想要使用宏的确切内容,因此很难说它们是否是最适合您的解决方案,或者您是否有更好的选择。但我不担心他们的人数。标准头文件定义了数百个宏。