6

C ++を学ぶための旅の中で、実際のWebサイトにあるC++マニュアルを介して学習します。DevC ++を使用していて、コンパイラがエラーであるかどうかわからないという問題が発生しました。

このコードを少しずつ自分で入力していくうちに、生産性が向上し、学習した独自のコードを例に追加して、変数を初期化することになりました。これはC++マニュアルにあるコードです

#include <iostream>

using namespace std;
int main ()
{
    int a=5;     // initial value = 5
    int b(2);    // initial value = 2
    int result;  // initial value undetermined

    a = a + 3;
    result = a - b;
    cout << result;

    return 0;
}

これは、「「メイン」の複数の定義」というコンパイラエラーをポップアップ表示します。これは実際のC ++ページにあるため、コンパイラエラーを推測しています。

誰かが私にこれが起こっている理由とこのエラーの原因について正しい方向に向けてください。

4

2 に答える 2

8

「メイン」の複数の定義は、メインの別の定義があることを示唆しています。おそらく、プロジェクト内の別の.cまたは.cppファイルにあります。同じ名前とシグニチャ(パラメータタイプ)を持つ関数は1つだけ持つことができます。また、mainは非常に特殊であるため、プロジェクトでエントリポイントとして使用できるmain関数は1つだけです(パラメーターなし、int、またはintとchar **のいずれか)。

PS技術的には、これはリンカーエラーです。微妙な違いですが、基本的には、同じ名前の定義が複数あるため、リンカーがどの関数をエントリポイントにするかを決定できないという不満があります。

于 2012-10-13T07:58:48.893 に答える
0

私のtasks.jsonファイルにこのエラーの原因である2つのファイル参照があり、それを理解するのに長い時間がかかったことがわかりました。これが他の誰かに役立つことを願っています.....以下の「ここ*****」を参照してください。

     "-I/usr/include/glib-2.0",
            "-I/usr/lib/x86_64-linux-gnu/glib-2.0/include",

        //"${file}",           //HERE**********************

            "-lgtk-3",
            "-lgdk-3",
            "-lpangocairo-1.0",
            "-lpango-1.0",
            "-lharfbuzz",
            "-latk-1.0",
            "-lcairo-gobject",
            "-lcairo",
            "-lgdk_pixbuf-2.0",
            "-lgio-2.0",
            "-lgobject-2.0",
            "-lglib-2.0",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}" //HERE*************

        ],
于 2021-11-25T00:27:28.117 に答える