У меня есть простое приложение в C, которое использует POSIX struct sigevent.POSIX sigevent не компилируется с c11
#include <signal.h>
int main(int argc, char *argv[])
{
struct sigevent sig_event;
return 0;
}
Когда я компилирую это так:
gcc test.c
это прекрасно. Когда я вынуждаю режим C11, он не работает:
gcc test.c --std=c11
test.c: In function ‘main’:
test.c:5:21: error: storage size of ‘sig_event’ isn’t known
struct sigevent sig_event;
Я использую gcc 5.2.1 на Ubuntu 15.10. Любые идеи, что вызывает эти ошибки? Эта проблема возникла впервые, когда я попытался скомпилировать пример из руководства для функции timer_create(). Ситуация была такой же, за исключением гораздо большего числа ошибок.
Это все сводится к тому, что компилятор не допускается сбрасывать нестандартные идентификаторы внутри стандартных заголовков. При компиляции для строгого стандарта C, будь то C11 или более ранние стандарты, gcc прекратит сбрасывать различные нежелательные сообщения в стандартные заголовки. – Lundin