我的程序中有一个非常简单的文件系统。

有:main.cpp其中包括worker.h,worker.h和worker.cpp其中包括worker.h

worker.h具有Header防护,并声明了main.cpp和worker.cpp都需要的一些变量,并且它具有一些函数声明。

#ifndef __WORKER_H_INCLUDED__
#define __WORKER_H_INCLUDED__

    bool x;
    int y;

    void somefunction( int w, int e );

#endif

通过其他一些线程和google结果,我了解到Header Guard保护您免受单个源文件中的多个包含,而不是多个源文件的影响。

所以我可以期待链接器错误。

我的问题是
  • 为什么只有变量而不是函数有多个定义错误?据我所知,这两个都只在头文件worker.h中声明而不定义.h
  • 如何使变量对main.cpp和worker.cpp均可用,而没有多定义链接程序错误?
  • 最佳答案



    因为您定义了变量。这样,它们仅被声明:

    extern bool x;
    extern int y;
    

    但是您必须在cpp文件中定义它们。 :
    bool x = true;
    int y = 42;
    

    关于c++ - 包含头文件错误:多个定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13680065/

    10-11 22:09
    查看更多