【发布时间】:2021-01-13 10:44:04
【问题描述】:
在一个翻译单元中,我有一个完全定义的枚举:
typedef enum E { A, B, C } ET;
在另一种情况下,我对这个枚举只有一个不完整的定义:
typedef enum E ET;
我想知道这两种类型是否兼容。
兼容类型的定义在this page 中有描述,但对我来说似乎很模糊。当两个枚举是完整类型时有一个解释,但我不确定如果一个是而不是另一个会发生什么。
下面这句话应该怎么理解?
一个是枚举类型,另一个是枚举的底层类型
这是否意味着两种类型都兼容?
【问题讨论】:
-
但是..兼容类型在这里无关。两个文件中的
enum E和ET是相同的类型。 -
我不确定第一个 TU 中的
ET是否与第二个 TU 中的ET相同,这是我的问题。确实,如果它们是同一类型,我同意它们是兼容的。 -
好的。你会如何使用
ET在第二个? -
@KamilCuk 在第二个 TU 中,
ET不是直接使用的,而是一个以ET为参数的函数指针。此函数指针位于我想在两个翻译单元中操作的结构中。如果不清楚,如果您愿意,我可以发布一个虚拟示例。