【问题标题】:Multiple definitions of "Main"“主要”的多种定义
【发布时间】:2012-10-13 07:55:56
【问题描述】:

在学习 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++ 页面上,所以我猜测它是编译器错误。

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

【问题讨论】:

  • 您的项目中是否有多个文件,其中另一个也包含主文件?通常这些错误消息是非常自我解释的。
  • 您指的是哪个实际站点上的哪个 C++ 手册?
  • 如果您的项目中没有多个文件,您是否可能多次编译这个文件? (从命令行,c++ x.cc x.cc -o x 会这样做。)
  • @hvd dev-c++ 是一个 ide:bloodshed.net/devcpp.html 所以我怀疑他是否将同一个文件链接了两次。 (还有一个相当老的,运行 gcc 3.4.2)
  • 这不是 C++ 错误,代码看起来不错。此错误是因为您错误地使用了 DevC++。您如何设法在“项目”中包含两个主要功能。也许你还在编译你以前工作过的程序?

标签: c++


【解决方案1】:

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

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

【讨论】:

  • 他可以很容易地找到另一个主,只需评论这个主并按F10键进入另一个主
  • 谢谢大家,我没有意识到在 dev-cpp 中,在项目文件夹中,当我尝试编译我正在处理的一个页面时,另一个文件中的 main 也必须是它的一部分,因此,一旦我从项目文件夹中删除了其他页面,它就起作用了!!
  • 如果您将 CMAKE 与 GLOB_RECURSE 模式一起使用,请确保您的构建文件夹位于该模式适用的文件夹之外。我碰巧在 cmake-build-folder 中包含了一个中间“*.c”文件。
【解决方案2】:

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

     "-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*************

        ],

【讨论】:

    猜你喜欢
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    相关资源
    最近更新 更多