поделиться структурой в C ++ и C? - PullRequest
1 голос
/ 01 октября 2010

скажем, определение структуры в заголовочном файле c ++, foo.h

typedef struct {
    ...
}foo;

в файле .c Я включаю foo.h, тогда

foo* fooPtr;

будет работать

Ответы [ 2 ]

1 голос
/ 01 октября 2010

Многое зависит от того, что на самом деле в структуре 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;
0 голосов
/ 01 октября 2010

Объявление C ++ struct совместимо с языком C, если оно не имеет никаких функций C ++; равнина, язык С, декларация. Например, нет private объявлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...