为什么会出现“多个定义”错误

时间:2019-07-09 03:15:23

标签: c++

我试图将2个.cpp文件与1个.h文件一起使用,但是每当在两个.cpp文件中都包含.h文件时,都会出现“多个定义”错误。所以我这样做是为了显示我的问题,是的,我知道thing.cpp从来没有做任何事情,但是仍然会触发问题 如果有帮助,我也会使用Code :: Blocks和GNU GCC编译器。

main.cpp

stream {
    resolver 172.31.0.2;
    upstream redis {
        zone tcp_servers 64k;
        server redisservice.local service=_http._tcp resolve;
    }
    server {
        listen 12345;
        status_zone tcp_server;
        proxy_pass redis;
    }
}

thing.cpp

Set ws2 = Worksheets("MajorInventoryList")
ws2.Cells(WorksheetFunction.Match(me.txtID.value), 10) = "On Loan"

hello_world.h

#include <iostream>
#include <C:\0w0\Multiple file test\Hello_world.h>
#include <windows.h>
using namespace std;
int main()
{
    A:
    Sleep(500);
    Hello();
    x++;
    if(x==5)
    {
        Sleep(500);
        Hello();
        return -1;
    }
    goto A;
}

我希望它可以正常工作,但不会,并且出现这些错误

#include <iostream>
#include <C:\0w0\Multiple file test\Hello_world.h>
#include <windows.h>
using namespace std;
int thing()
{
    A:
    Sleep(500);
    Hello();
    x++;
    if(x==5)
    {
        Sleep(500);
        Hello();
        return -1;
    }
    goto A;
}

编辑:我不知道这与你们所说的其他问题有多接近。那我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

hello_world.h:#endif必须在文件末尾,以避免重复定义。

#ifndef Hello_World_H
#define Hello_World_H

int x=1;
using namespace std;
int Hello()
{
    cout << x << endl;
    return 69;
}
#endif // Hello_World