你在哪里宣布一个目标C的常数?

我在头文件中声明了一个常量const double EARTH_RADIUS=6353; 这是导入到各种其他头,我有一个链接器错误。

 Ld /Users/Teguh/Library/Developer/Xcode/DerivedData/BadgerNew-bjopcgcgsjkcvcevflfbvsjwfgnu/Build/Products/Debug-iphonesimulator/BadgerNew.app/BadgerNew normal i386 cd /Users/Teguh/Dropbox/badgers/BadgerNew setenv MACOSX_DEPLOYMENT_TARGET 10.6 setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-g++-4.2 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk -L/Users/Teguh/Library/Developer/Xcode/DerivedData/BadgerNew-bjopcgcgsjkcvcevflfbvsjwfgnu/Build/Products/Debug-iphonesimulator -F/Users/Teguh/Library/Developer/Xcode/DerivedData/BadgerNew-bjopcgcgsjkcvcevflfbvsjwfgnu/Build/Products/Debug-iphonesimulator -filelist /Users/Teguh/Library/Developer/Xcode/DerivedData/BadgerNew-bjopcgcgsjkcvcevflfbvsjwfgnu/Build/Intermediates/BadgerNew.build/Debug-iphonesimulator/BadgerNew.build/Objects-normal/i386/BadgerNew.LinkFileList -mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -framework CoreLocation -framework UIKit -framework Foundation -framework CoreGraphics -framework CoreData -o /Users/Teguh/Library/Developer/Xcode/DerivedData/BadgerNew-bjopcgcgsjkcvcevflfbvsjwfgnu/Build/Products/Debug-iphonesimulator/BadgerNew.app/BadgerNew ld: duplicate symbol _EARTH_RADIUS in /Users/Teguh/Library/Developer/Xcode/DerivedData/BadgerNew-bjopcgcgsjkcvcevflfbvsjwfgnu/Build/Intermediates/BadgerNew.build/Debug-iphonesimulator/BadgerNew.build/Objects-normal/i386/NearbyIsiKota.o and /Users/Teguh/Library/Developer/Xcode/DerivedData/BadgerNew-bjopcgcgsjkcvcevflfbvsjwfgnu/Build/Intermediates/BadgerNew.build/Debug-iphonesimulator/BadgerNew.build/Objects-normal/i386/FrontPageofBadger.o for architecture i386 collect2: ld returned 1 exit status 

基本上我希望我的项目中的所有课程都可以使用常量。 我应该在哪里申报?

你可以在头文件中声明,在代码文件中定义它。 简单地声明为

 extern const double EARTH_RADIUS; 

然后在某个.m文件中(通常是.h文件中的.m文件)

 const double EARTH_RADIUS = 6353; 

有两种方法可以实现这一点:

第一个选项 – 如前面的回复指出的,在.h文件中

 myfile.h extern const int MY_CONSTANT_VARIABLE; 

并在myfile.m中定义它们

 myfile.m const int MY_CONSTANT_VARIABLE = 5; 

第二个选项 – 我的最爱

 myfile.h static const int MY_CONSTANT_VARIABLE = 5 ; 

声明它在一个源文件,并有外部链接(使用extern关键字),以便在所有其他源文件中使用。

最好的做法是在.h和.m文件中声明它。 Objective-C中的Constants提供了关于这个问题的非常详细的答案。