6

在学习 C++ 的过程中,我通过实际网站上的 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;
}

这是弹出一个编译器错误,说““Main”的多个定义”现在这是在实际的 C++ 页面上,所以我猜测它是一个编译器错误。

有人可以为我指出正确的方向,为什么会发生这种情况以及导致此错误的原因是什么。

4

2 回答 2

8

“main”的多个定义表明您对 main 有另一个定义。也许在您项目的另一个 .c 或 .cpp 文件中。您只能拥有一个具有相同名称和签名(参数类型)的函数。此外,main 非常特殊,因此您在项目中只能有一个可用作入口点的 main 函数(没有参数、一个 int 或一个 int 和一个 char**)。

PS 从技术上讲,这是一个链接器错误。这是一个细微的区别,但基本上它抱怨链接器无法确定哪个函数应该是入口点,因为有多个同名定义。

于 2012-10-13T07:58:48.893 回答
0

发现我的 tasks.json 文件中有两个文件引用导致了这个错误,这让我花了很长时间才弄清楚。希望这对其他人有所帮助.....见下面的“这里*****”:

     "-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 回答