【问题标题】:C++ undeclared identifier when trying to create an instance of a struct尝试创建结构实例时 C++ 未声明的标识符
【发布时间】:2014-11-19 11:20:37
【问题描述】:

我有一个在 C++ 头文件中声明的结构体:

struct AII_Common_Export message{
    ...
};

然后我尝试在 C++ 源文件中创建该结构的实例,以便我可以设置/使用存储在结构中的一些属性:

message data;

但是,当我编译我的代码时,我在这一行收到“未声明的标识符”错误...我已将头文件包含在源文件中,所以我不明白为什么会收到此错误 - 可以有人给我解释一下吗?

我还尝试使用以下方法创建它的实例:

AII_Common_Export message data;

但随后出现编译错误:“语法错误:缺少';'在标识符“数据”之前。

有什么想法可以解决这个问题,以便我可以创建结构的实例吗?

编辑

我刚刚找到了AII_Common_Export 定义——它的定义是:

#    define AII_Common_Export ACE_Proper_Import_Flag

ACE_Proper_Import_Flag 定义为:

#define ACE_Proper_Import_Flag __declspec (dllimport)

这两个定义在不同的头文件中。

【问题讨论】:

  • @AdrianoRepetti 我认为这是对其他事物的定义
  • @MarcoA。很对! soneone2088,你是否包含了这样的标题?
  • @MarcoA。但这无论如何都不是正确的语法。
  • @OP:发布定义AII_Common_Export的代码。 @Korbi 我没有说那是正确的,我只是猜测
  • @Korbi:这是不正确的。它不是标准的 C++,但许多编译器在 struct/class 和名称之间放置了导出指令。您通常使用宏来隐藏差异或在导入时重新定义它。你会期望 #define AII_Common_Export __declspec(dllexport) 或某种等效的地方 - OP 只需要确保定义也是可见的

标签: c++ struct undeclared-identifier


【解决方案1】:

去做吧。

 struct message{
        ...
    };

message data;

http://www.cplusplus.com/doc/tutorial/structures/

【讨论】:

  • 这正是我所做的 - 正如我的 OP 中提到的那样,该结构在标题中定义为:struct message{...};,我正在 cpp 中创建它的一个实例:@987654324 @,但我收到此错误...
  • 你做了" struct AII_Common_Export message{ ... };"那是不正确的。您必须删除“消息”或“AII_Common_Export”。
  • 我没有写头文件——它是别人写的,目前正在被其他 cpp 文件使用,所以我必须假设结构的定义是正确的。 .
  • 在这种情况下,您缺少另一个定义 All_Common_export 的标头。
  • 我已经包含了定义AII_Common_export 的头文件,但现在我收到一个错误,上面写着“使用未定义类型'消息'”......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多