c++ - C2065 将定义分配给 int 时未声明的标识符

标签 c++ compiler-errors c-preprocessor

我有一个关于定义的小问题。我想将它分配给一个整数变量,但编译器说它未声明。

代码如下: 定义.h

#ifndef DEFINES_H
#define DEFINES_H

#define MYDEFINE 2

#endif

我的类.h

namespace mynamespace {
class myClass {
    int someFunction();
};
}

我的类.cxx

#include "defines.h"
#include "myclass.h"
namespace mynamespace {
int myClass::someFunction() {
    int var = MYDEFINE;
    return 0;
}
}

在与 int 赋值的行中发生了编译器错误。我还尝试使用另一个定义,定义在与上面相同的头文件中,作为具有相同效果的函数参数。有任何想法吗?提前致谢。

我知道使用 defines 是一个坏习惯,但我只是扩展了一个现有的项目并且我尽量保持他们的设计方式。

编辑:错误消息只是:Fehler 1 error C2065: 'MYDEFINE': nichtdeklarierter Bezeichner ... 如您所见,这不是真正的源代码,但我认为我非常整理问题时要小心。

EDIT2:感谢您对#warning 的提示。在不同的文件夹中有 2 个同名文件。我不知道为什么编译器没有提出这个问题。无论如何,它现在有效。

最佳答案

您应该检查符号 MYDEFINE 是否真的定义了。

检查头文件是否在 它被宣布真的包括在内 (并编译)。在定义附近使用 #warning 以确保它是为 myclass.cxx 编译的:

#ifndef DEFINES_H
#define DEFINES_H

#define MYDEFINE 2
#warning My define is defined

#endif

如果它没有编译(您不会在编译日志中找到警告消息),请搜索 DEFINES_H。它可能已经在其他地方定义。

关于c++ - C2065 将定义分配给 int 时未声明的标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/726002/

相关文章:

c - 在 C 中,这个宏定义了什么?

c++ - 有没有办法在 C++ 中像这样初始化 3D 数组?

C++ 复制一个流对象

c++ - 错误: operator '&&' has no right operand

qt - qt创建者: no such a file or directory

C++ 使用#define 访问结构?

从现有的 x 宏创建相关的 x 宏

C++ 映射值在运行时没有改变,我做错了什么?

c++,eclipse,字段无法解析

c++ - 运算符<比较多个字段