Проблема:
Проблема вызвана typedef, объявленным во включающем файле:
Файл [main.c]:
#include <glib.h>
//...
#if (!GLIB_CHECK_VERSION(2,11,0))
typedef pid_t GPid;
#endif
//...
#include "someheader.h"
//...
Файл [someheader.h]:
#include <stdio.h>
#include "unitid.h"
//...
Файл [unitid.h]:
typedef struct _unitID {
int sock; // socket
unsigned long au; // the AU ID
} unitID;
Ошибка с первой версией typedef полностью переходит в unitid.h, вызывая странное поведение.Поскольку мы создаем более старую версию Glib, typedef вызывает ошибку.
Решение
Решение состояло в том, чтобы добавить проверку платформы для обработки различий в том, как эти две платформы работают сPID, как видно из [main.c]:
//...
#if (!GLIB_CHECK_VERSION(2,11,0))
#ifdef WIN32
typedef void* GPid;
#else
typedef int GPId;
#endif
#endif
//...