谁能告诉我为什么 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 ==========
Visual Studio 2017 不支持任何 C11 功能。你可以插英特尔C编译器进入 Visual Studio(支持 C11)或使用Clang or Gcc.
Quora answer:
- 向您的 Visual Studio 添加内置的CLANG support
- 创建新项目
- 在“平台工具集”的项目属性(常规)中,选择“Visual Studio 2017 - Clang with Microsoft CodeGen (v141_clang_c2)”
- 在 C/C++“语言”部分中打开“C 语言”标准列表,您可以在其中找到当今所有相关的 C 标准 L C89、C99、C11
...选择您想要的
之后(和以前一样)VS2017将编译带有“.c”的文件
扩展名为 C,“.cpp”扩展名为 C++。
不要忘记可以更改每个文件的属性
也。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)