class 定义中的变量类型不完整?
Variable has incomplete type in class definition?
我在 .h 文件中得到了这个 class 定义,在 .cpp 文件中得到了实现。当我尝试编译它时,头文件给出了一些错误和警告:
/home/don/BerthaApex/apex/src/lib/apexmain/apexloader.h:6: error: variable 'APEX_EXPORT ApexLoader' has initializer but incomplete type
class APEX_EXPORT ApexLoader
^
/home/don/BerthaApex/apex/src/lib/apexmain/apexloader.h:6: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
/home/don/BerthaApex/apex/src/lib/apexmain/apexloader.h:9: error: expected primary-expression before 'public'
public:
出现这个错误的代码是:
#ifndef _APEXLOADER_H
#define _APEXLOADER_H
#include "global.h"
class APEX_EXPORT ApexLoader
{
public:
int Load( int argc, char *argv[]);
};
#endif
"class APEX_EXPORT ApexLoader" 是错误和警告的行。
APEX_EXPORT 是在同一个文件中包含的头文件中定义的。
编辑:
APEX_EXPORT在"global.h"中的定义如下:
#ifdef APEX_MAKEDLL
#define APEX_EXPORT APEX_EXPORT_DECL
#else
#define APEX_EXPORT APEX_IMPORT_DECL
#endif
有谁知道为什么会出现这些错误?我怎样才能摆脱它们?
提前致谢!
编译器:gcc 4.8.4
OS: Ubuntu 14.04
我的心理调试技巧告诉我 APEX_EXPORT
不是 #define
d,因此编译器认为您正在尝试声明该类型的变量。
如果您认为您已经包含了所有正确的内容 headers,最好的方法是 运行 源文件上的预处理器并查看它生成的内容(例如 g++ -E
).
我在 .h 文件中得到了这个 class 定义,在 .cpp 文件中得到了实现。当我尝试编译它时,头文件给出了一些错误和警告:
/home/don/BerthaApex/apex/src/lib/apexmain/apexloader.h:6: error: variable 'APEX_EXPORT ApexLoader' has initializer but incomplete type
class APEX_EXPORT ApexLoader
^
/home/don/BerthaApex/apex/src/lib/apexmain/apexloader.h:6: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
/home/don/BerthaApex/apex/src/lib/apexmain/apexloader.h:9: error: expected primary-expression before 'public'
public:
出现这个错误的代码是:
#ifndef _APEXLOADER_H
#define _APEXLOADER_H
#include "global.h"
class APEX_EXPORT ApexLoader
{
public:
int Load( int argc, char *argv[]);
};
#endif
"class APEX_EXPORT ApexLoader" 是错误和警告的行。
APEX_EXPORT 是在同一个文件中包含的头文件中定义的。
编辑: APEX_EXPORT在"global.h"中的定义如下:
#ifdef APEX_MAKEDLL
#define APEX_EXPORT APEX_EXPORT_DECL
#else
#define APEX_EXPORT APEX_IMPORT_DECL
#endif
有谁知道为什么会出现这些错误?我怎样才能摆脱它们? 提前致谢!
编译器:gcc 4.8.4 OS: Ubuntu 14.04
我的心理调试技巧告诉我 APEX_EXPORT
不是 #define
d,因此编译器认为您正在尝试声明该类型的变量。
如果您认为您已经包含了所有正确的内容 headers,最好的方法是 运行 源文件上的预处理器并查看它生成的内容(例如 g++ -E
).