【发布时间】:2011-11-20 17:51:09
【问题描述】:
我有一个关于 Objective C 的一般编码风格问题。
当我在文件中有#define 时,我将它直接放在#import 代码行的下方和@implementation 代码行的上方:
#import "MyLibrary.h"
#define myConstant 99
@implementation MyClass
这是标准风格,还是有标准风格的地方放定义?
【问题讨论】:
标签: objective-c
我有一个关于 Objective C 的一般编码风格问题。
当我在文件中有#define 时,我将它直接放在#import 代码行的下方和@implementation 代码行的上方:
#import "MyLibrary.h"
#define myConstant 99
@implementation MyClass
这是标准风格,还是有标准风格的地方放定义?
【问题讨论】:
标签: objective-c
您应该始终将#defines 放在任何导入之后。否则,您将使用您的 #define 值污染导入的文件,并且在极端情况下会更改它们的工作方式。
【讨论】:
#define title AwesomeSauce,然后是#import <AppKit/AppKit.h>。现在每次调用-[NSWindow title] 都会被编译为-[NSWindow AwesomeSauce],这会产生很多错误。规则:先导入,然后定义任何点。
Objective-C 并没有真正使用定义来定义常量。
但是可以像你一样做,因为 Objective-C 向后兼容 C。
这就是我在 Objective-C 中的头文件中的做法:
extern int const MyConstant;
在实现文件中:
int const MyConstant = 99;
【讨论】:
extern const 用于浮点数/无关整数,enum 用于相关整数
我从未见过这方面的任何标准。 #defines 几乎总是在文件的顶部(在#imports 之后),但位置并不重要。
【讨论】: