У меня есть следующий кусок файла заголовка BKE_mesh.h:
/* Connectivity data */
typedef struct IndexNode {
struct IndexNode *next, *prev;
int index;
} IndexNode;
void create_vert_face_map(ListBase **map, IndexNode **mem, const struct MFace *mface,
const int totvert, const int totface);
void create_vert_edge_map(ListBase **map, IndexNode **mem, const struct MEdge *medge,
const int totvert, const int totedge);
Обратите внимание, что файл заголовка был подготовлен для возможности использования в файле C ++, как он имел:
#ifdef __cplusplus
extern "C" {
#endif
вверху файла, а требуемый конец внизу. Но класс, реализующий это, был написан на C.
Далее, когда я пытаюсь #include заголовочный файл, я получаю странную ошибку. Если файл имеет расширение .cpp, он просто компилируется, нареканий нет. Тем не менее, если я сделаю:
#include "BKE_mesh.h"
внутри файла с расширением .c я получаю следующие ошибки:
expected ')' before '*' token
для двух последних функций, в частности, переменная:
ListBase **map
в обоих классах. (Обратите внимание, что ранее в заголовочном файле он объявлен, но не определен ListBase).
Итак, мой вопрос: почему этот действительный код C ++, а не код C?
Спасибо.