重複の可能性:
const は、C では内部リンケージを意味しないのに、C++ では内部リンケージを意味するのはなぜですか?
C++の外部リンケージと内部リンケージとは
実行可能ファイルにコンパイルしようとしている 2 つの C ファイルがあります。1 つのファイルには、次のように宣言が 1 つだけ含まれています (簡略化されています)。
const char *foo[2] = {"thing1", "thing2"};
2番目のcファイルはこれを行います
extern const char *foo[2];
main()
{
//Code that does stuff with foo
}
コンパイル時に、foo が未解決の外部シンボルであるというリンカ エラーが発生します。コンパイラが foo を最適化していると仮定しています。ここに何かアイデアはありますか?