Многое зависит от того, что на самом деле в структуре foo
. Если структура является просто данными и не имеет никакого поведения сама по себе или в каком-либо из ее полей-членов, то она должна нормально работать в C или C ++. Если он имеет какой-либо тип явного или неявного поведения (например, сгенерированные деструкторы), то нет, он не будет работать должным образом в C.
Например:
// Works fine in C or C++ irrespective of where it was defined
typedef struct {
int field1;
} foo;
// Will have different behavior if it compiles at all.
struct bar {
~bar() {
// destructor code
}
};
typedef struct {
bar b;
} foo;