我有两个c文件,具有功能的foo.c和测试foo.c的功能的test_foo.c。如何声明extern typedef结构体?
有没有办法访问struct typedef BAR
我在test_foo.c中的foo.c中定义的,而不使用头文件?到目前为止,我能够避免一个h文件,因此整个程序将由foo.c组成。谢谢。
foo.c
typedef struct BAR_{...} bar;
BAR *bar_new(...) {..}
test_foo.c
extern BAR *bar_new(...)
error: expected declaration specifiers or ‘...’ before ‘BAR’
只有在test_foo.c(或foo.c以外的任何其他模块)需要访问内容结构本身时,将定义移动到头文件才是正确的解决方案。如果是ADT或其他原因,test_foo.c不需要类型的内部消息,我认为前向声明是更好的解决方案。 – harald 2010-07-12 10:42:47
现在,我只是将定义复制到其他c文件中。 – Framester 2010-07-12 12:48:30
我正在做同样的事情 - 我正在开发一个测试工具,应该包装生产代码。在生产守则中,结构定义没有公开的业务,应该被埋没。因此我必须将定义复制到我的测试工具中。这是重复的,但我的链接器足够聪明,可以给我警告,如果一个变化,而不是另一个。 – Nick 2014-12-03 23:35:51