按照 gcc 4.4.2 版,似乎是这样说的
typedef struct foo foo;
// more code here - like function declarations taking/returning foo*
// then, in its own source file:
typedef struct foo
{
int bar;
} foo;
在 C++ 中是合法的,但在 C 中不是。
当然,我有一段代码可以通过使用 foo 类型在 C++ 中编译得很好,但看来我必须让它使用 struct foo(在头文件中) 让它与其他开发人员编写的一些 C 代码一起工作。
有没有一种方法可以在 gcc C 中预先声明 struct typedef foo foo 而不会在为 C 编译时出现“typedef 'foo' 的重新定义”错误? (我不想要 struct typedef _foo foo 的边缘非法和不太干净的下划线解决方案)
最佳答案
这是你需要的吗?
// header (.h)
struct foo;
typedef struct foo foo;
foo *foo_create();
// etc.
// source (.c)
struct foo {
// ...
}
在键入定义时,我也倾向于在我的结构名称前加上下划线,以明确其隐私性并防止可能的名称冲突。
关于c++ - 一种为 c 执行 c++ "typedef struct foo foo;"的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1980326/