LINUX.ORG.RU

[C] -std=c99

 


0

0

Почему-то с параметром -std=c99 не собирается простейший код:

#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>

int main(void) {
    struct addrinfo hints;

    return 0;
}


./resolv_test.c: In function ‘main’:
./resolv_test.c:6: error: storage size of ‘hints’ isn’t known


А вот если убрать std=c99 то всё будет нормально. Глядя в инклуды вижу 
#ifdef  __USE_POSIX
struct addrinfo
...

Что надо указать компилеру чтобы __USE_POSIX врубился? :)
Помню всякие дефайны были типа GNU_SOURCE, XOPENSOURCE итп, это из этой же оперы?
Может, просто #define __USE_POSIX воткнуть? :)
★★★★★

У меня сделано вот так:

#if !defined(_POSIX_C_SOURCE)
#	define _POSIX_C_SOURCE 200112L
#else
#	if (_POSIX_C_SOURCE < 200112L)
#		undef _POSIX_C_SOURCE
#		define _POSIX_C_SOURCE 200112L
#	endif
#endif

Deleted
()

спасибо, мужики, посмотрел features.h и всё понял. Не понял только зачем это всё надо, видимо, не смогли договориться. И, похоже, просто так такой код на sun/bsd с -DGNU_SOURCE итп не соберётся. Или соберётся? :)

Странно что раньше с этим не сталкивался. Тока вот щас с gethostbyname на getaddrinfo стал менять код и наткнулся.

//true_admin

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.