7

抱歉,如果这是一个重复的问题,但我已经搜索了几个小时,我得到的答案相互矛盾……更糟糕的是,它们都不起作用。

这是一件简单的事情。我有很多源文件,我有一些我想放在一个文件中的常用参数,比如“Parameters.h”。我想在运行时设置这些参数(一次),方法是将它们作为参数传递给程序。

PS:我知道更好的方法是将所有内容作为参数传递给函数,但它是一段笨重的代码,我需要尽快得到结果而无需进行太多更改。

这是一个最小的工作示例:

参数.h

#ifndef PARAMETERS_H_
#define PARAMETERS_H_

extern int Alpha;

#endif

主文件

#include <iostream>
#include "Parameters.h"

int main(int argc, char * argv[])
{
    const int Alpha = 12.0;
}

函数.cpp

#include "Parameters.h"

double Foo(const double& x)
{
    return Alpha*x;
}

当我编译时

gcc main.cpp Functions.cpp

我收到错误“Functions.cpp:(.text+0xa): undefined reference to `Alpha'”。

4

1 回答 1

17

您已经声明了一个名为 的全局变量Alpha,但尚未定义它。在一个源文件中,在文件范围内写入:

int Alpha;

或使用初始化程序:

int Alpha = 42;

请注意,Alpha您在其中定义的局部变量main与此全局变量不同且完全无关。

于 2013-10-10T00:10:03.663 回答