【发布时间】:2013-09-02 18:59:16
【问题描述】:
我在单独的标头中声明了一些常量变量(即 constant.h)。
我在 debug.cpp 中包含了 constant.h 以访问该变量。
我在 main.cpp 中包含 constant.h、debug.h 以访问变量。
当我编译时,它显示错误**multiple definition** of **IF_DEBUG_ENABLED**。
请告诉我实际上我做错了什么。另外,请注意,这是我使用第一个 c/c++ 应用程序的第一天。我什至从未在学校读过它。
我的代码源如下: 作为
/-- 常量.h --/
#ifndef CONSTANT_H
#define CONSTANT_H
const char* APP_NAME = "ymcmcb";
const bool IF_DEBUG_ENABLED = true;
#endif // CONSTANT_H
/-- debug.h --/
#ifndef DEBUG_H
#define DEBUG_H
#include <QString>
class Debug
{
public:
static void Log(QString Message);
};
#endif // DEBUG_H
/-- debug.cpp --/
#include "constant.h"
#include "debug.h"
#include "QDebug"
static void Log(QString Message)
{
if (IF_DEBUG_ENABLED)
qDebug() << Message; //It says problem is here
}
/-- main.cpp --/
#include "constant.h"
#include "debug.h"
int main(int argc, char *argv[])
{
Debug::Log("New application has been run");
}
【问题讨论】:
-
我没有收到与您相同的链接器错误:我收到了
multiple definition of 'APP_NAME'(不是'IF_DEBUG_ENABLED')。我还收到第二个错误:undefined reference to 'Debug::Log(QString)'. -
自从你开始学习以来,你有很多东西要学。至少有一段时间我会坚持使用单个源文件中的程序。少一件事让你绊倒。
-
另一件事。没有像 C/C++ 这样的语言,只有 C 和 C++。你正在学习 C++。说 C/C++ 的人往往会被激怒。
-
还有一件事,问得很好。包括回答它所需的一切。质量比我们通常在这个论坛上看到的要高得多。你会走得很远。
标签: c++ header-files