Eclipse/GCC:对 Extern 变量的未定义引用

Eclipse/GCC: Undefined Reference to Extern Variable

本文关键字:变量 未定义 引用 Extern GCC Eclipse      更新时间:2023-10-16

对不起,如果这是一个重复的问题,但我一直在搜索几个小时,我得到了相互矛盾的答案......更糟糕的是,它们都没有工作。

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

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

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

参数.h

#ifndef PARAMETERS_H_
#define PARAMETERS_H_
extern int Alpha;
#endif

主.cpp

#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

我收到错误"函数.cpp:(.text+0xa(:对'阿尔法'的未定义引用"。

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

int Alpha;

或使用初始值设定项:

int Alpha = 42;

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