如何声明extern typedef结构?

Fra*_*ter 6 c extern

我有两个c文件,foo.c的功能和test_foo.c,它们测试foo.c的功能.

有没有办法BAR在不使用头文件的情况下访问test_foo.c中foo.c中定义的struct typedef ?到目前为止,我能够避免使用啊文件,因此整个程序将由foo.c组成.谢谢.

foo.c   
typedef struct BAR_{...} bar;
BAR *bar_new(...) {..}

test_foo.c
extern BAR *bar_new(...)
Run Code Online (Sandbox Code Playgroud)

error: expected declaration specifiers or ‘...’ before ‘BAR’

Shi*_*oko 6

答案是有一个,你应该使用头文件.您可以将结构的定义复制typedef struct BAR_{...} bar;到其中test_foo.c,它将起作用.但这会导致重复.每个有效的解决方案都必须使编译器的实现可用于编译器test_foo.c.如果在这种情况下适合您,您也可以使用ADT.