Кто-нибудь может посоветовать, почему Visual Studio 2017 не поддерживает новую функцию C11 _Generic
? Я обнаружил, что это очень полезная функция, но ее нельзя использовать в Visual Studio 2017.
Ниже приведен пример кода:
#include <stdio.h>
#define MYTYPE(X) _Generic((X),\
int:"int",\
float:"float",\
double:"double",\
default:"other")
int main(void)
{
int d = 5;
printf("%s\n", MYTYPE(d));
printf("%s\n", MYTYPE(2.0*D));
return 0;
}
Компилятор выдаст следующие предупреждения и ошибки:
1>------ Build started: Project: Project1, Configuration: Debug Win32 ------
1>predef.c
1>c:\users\mia\documents\c\listing 16.13\project1\project1\predef.c(11): warning C4013: '_Generic' undefined; assuming extern returning int
1>c:\users\mia\documents\c\listing 16.13\project1\project1\predef.c(11): error C2059: syntax error: 'type'
1>c:\users\mia\documents\c\listing 16.13\project1\project1\predef.c(12): error C2065: 'D': undeclared identifier
1>c:\users\mia\documents\c\listing 16.13\project1\project1\predef.c(12): error C2059: syntax error: 'type'
1>Done building project "Project1.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
_Generic
. С появлением двух новых параметров компилятора, /std:c11 и /std:c17, мы официально поддерживаем последние стандарты языка ISO C. - person vulcan raven   schedule 22.12.2020