7

これが繰り返しの質問である場合は申し訳ありませんが、私は数時間検索しており、矛盾する回答が得られています...さらに悪いことに、どれも機能していません.

それは簡単なことです。多くのソース ファイルがあり、"Parameters.h" など、1 つのファイルにまとめたい共通のパラメーターがいくつかあります。これらのパラメーターを引数としてプログラムに渡すことにより、実行時にこれらのパラメーターを (1 回) 設定したいと考えています。

PS: すべてを引数として関数に渡すのがより良い方法であることはわかっていますが、それは分厚いコードであり、多くの変更を加えずにすぐに結果を取得する必要があります。

最小限の作業例を次に示します。

パラメータ.h

#ifndef PARAMETERS_H_
#define PARAMETERS_H_

extern int Alpha;

#endif

main.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

「Functions.cpp:(.text+0xa): undefined reference to `Alpha'」というエラーが表示されます。

4

1 に答える 1

17

という名前のグローバル変数を宣言しましたAlphaが、定義していません。1 つのソース ファイルに、ファイル スコープで次のように記述します。

int Alpha;

または初期化子を使用:

int Alpha = 42;

Alpha内部で定義した名前のローカル変数mainは、このグローバル変数とは異なり、まったく無関係であることに注意してください。

于 2013-10-10T00:10:03.663 に答える