- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些头文件,其中包含一些简单的美化 struct
,其中只定义了纯虚方法。代码在带有 Visual Studio 2015 的 Windows 上编译良好,但 GCC 卡住了。一、代码:
namespace CustomUtils
{
interface API_ABSTRACT overriden
{
virtual int GetStatus() const = 0;
};
}
在导入的头文件中,interface
只是定义为一个stuct
:
#define interface struct
API_ABSTRACT
只是一个毫无用处的宏:
#define API_ABSTRACT
interface
typedef
是我无法控制的继承代码的一部分,并且 API_ABSTRACT
已就位,因此我可以将 define custom attributes 输入Windows 和 Linux 限制我导出的 API 函数。虽然这是在 VS2015 中构建的,但在 Linux 上,出现构建错误:
error: variable 'API_ABSTRACT CustomUtils::overridden' has initializer but incomplete type
如果我改变行:
interface API_ABSTRACT overriden
我认为它被翻译成:
struct overriden
代码将在 Linux 中正常编译。我已经尝试使用 gcc -E -dD
进行编译,将“预处理”后的源代码呈现到屏幕上以查看 typedef
和 #define
替换,但它似乎只显示 .cpp
文件的输出,而不显示 header (.h
) 文件。
为什么在尝试使用 GCC 编译时此代码不起作用?
谢谢。
gcc -E
的输出显示有问题的行是:
struct API_ABSTRACT overriden
所以罪魁祸首似乎是 API_ABSTRACT
宏,它的计算结果为空。
最佳答案
API_ABSTRACT 未在任何地方定义(不包含相应的文件)。检查它的方法是通过 tell-tale gcc -E
:
struct API_ABSTRACT overriden
使用 -E
,gcc 将显示预处理的输出,并且 API_ABSTRACT 清晰可见意味着预处理器对此一无所知。
当 C++ 编译器看到此构造(struct API_ABSTRACT overridden
)时,它认为(根据语法并且如果您授予编译器认知)overriden
是类型的变量API_抽象
。接着是大括号,它将构造转换为所述变量的初始化。然而,类型 API_ABSTRACT 从未被定义,因此编译器提示初始化了一个不完整类型的变量。
关于c++ - GCC - 将宏用于函数属性时出现 "has initializer but incomplete type"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36485824/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!