【发布时间】:2013-12-02 23:28:23
【问题描述】:
我正在处理一个项目,在该项目中我不得不使用一些以前编写的代码,这些代码使用许多头文件调用其他头文件。我试图将我的应用程序分开,但我仍然需要使用前面代码中定义的许多类型和函数。
在引用其他头文件中声明的数据类型时,我在自己的头文件中添加了前向声明。我现在的问题是,我试图从源文件的函数定义中引用联合类型,但我不太确定该怎么做。
旧头文件:
/* filename: include.h */
typedef union SOME_UNION_TYPE
{
int a;
.
.
}SOME_UNION_TYPE;
我的源文件:
/* filename: file.c */
void func()
{
SOME_UNION_TYPE A;
.
.
return;
}
我知道在我的源代码中包含“include.h”会更容易,但我会尽量避免它。到目前为止,我的尝试是在我的头文件中转发声明联合,希望将 typedef 名称暴露给编译器。
我的头文件:
/* filename: file.h */
union SOME_UNION_TYPE;
但是,当我编译时,我收到一个错误,抱怨 func() 中 A 的大小未知。
在此先感谢您的帮助。
【问题讨论】:
-
你不能分配前向声明的东西。但是,您可以创建一个指向任何被前向声明的指针。
-
@NoahWatkins 谢谢!我假设标头中的前向声明在编译时提供了大小信息。我需要花一些时间来更好地了解编译和链接过程。
标签: c forward-declaration