J'ai une application simple en C qui utilise POSIX struct sigevent.POSIX sigevent ne pas compiler avec c11
#include <signal.h>
int main(int argc, char *argv[])
{
struct sigevent sig_event;
return 0;
}
Quand je compilez comme ceci:
gcc test.c
il est très bien. Lorsque je force le mode C11, il échoue:
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;
J'utilise gcc 5.2.1 sur Ubuntu 15.10. Des idées sur ce qui cause ces erreurs? Ce problème s'est produit la première fois quand j'ai essayé de compiler un exemple de manuel pour la fonction timer_create(). La situation était la même, sauf pour beaucoup plus d'erreurs.
Tout se résume à ce que le compilateur ne peut pas vider les identificateurs non standard à l'intérieur des en-têtes standard. Lors de la compilation pour le standard C strict, qu'il s'agisse de standards C11 ou de standards antérieurs, gcc arrêtera de déverser divers indésirables dans les en-têtes standard. – Lundin