Objective c 生成使用extern指令导入常量double失败

Objective c 生成使用extern指令导入常量double失败,objective-c,cocoa,Objective C,Cocoa,我有一个文件: #import "OutletsHandler.h" @implementation OutletsHandler - (IBAction) pi : (id) sender { extern const double PI; // here I try to import PI [textField setDoubleValue: PI]; } - (id)init { self = [super init]; if (self) { } retur

我有一个文件:

#import "OutletsHandler.h"


@implementation OutletsHandler

- (IBAction) pi : (id) sender
{
    extern const double PI; // here I try to import PI
    [textField setDoubleValue: PI];
}

- (id)init
{
self = [super init];
if (self) 
{
}

return self;
}

- (void)dealloc
{
    [super dealloc];
}

@end
OutletsHandler.h导入CalculatorScanner.h,这是CalculatorScanner.h:

#import <stdbool.h>

const double PI=3.141592654;

我做错了什么?

你的问题是你在
CalculatorScanner.h
中定义了
PI
,而你只需要声明它。要使其正确编译和链接,请将其放入
CalculatorScanner.h

extern const double PI;
并将其放入
计算器扫描程序.cpp

const double PI = 3.141592654;

但在这种情况下,这也不是正确的解决方案。这里正确的解决方案是使用标准常量
M_PI
,而不是定义自己的(不太准确的)常量。

这里有一个范围问题如果你想使用extern,你不能在方法中使用它,它必须在全局范围内。

问题是,即使我只声明const double PI=3.141592654,我也会得到错误;似乎xcode找到了一个重复的变量。这是完全的错误:可能是因为双重包含:我使用import指令,但不知道如何修复它(即使使用include而不是import,错误仍然存在)。
const double PI = 3.141592654;