热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

VisualStudio2017不支持C11新功能_Generic

如何解决《VisualStudio2017不支持C11新功能_Generic》经验,为你挑选了2个好方法。

有人可以建议为什么Visual Studio 2017不支持C11新功能_Generic吗?我发现它是一个非常有用的功能,但不能在Visual Studio 2017中使用.

以下是示例代码:

#include 
#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 ==========

msc.. 7

Visual Studio 2017不支持任何C11功能.您可以将Intel C编译器插入Visual Studio(支持C11)或使用ClangGcc.

Quora回答:

在Visual Studio中添加内置的CLANG支持

创建新项目

在"平台工具集"的项目属性(常规)中选择"Visual Studio 2017 - 与Microsoft CodeGen一起使用(v141_clang_c2)

在C/C++"语言"部分打开"C语言"标准列表,在这里您可以找到所有C标准今天相关的C89,C99,C11 ...选择您想要的那个

在此之后(与以往一样)VS2017将编译扩展名为".c"的文件作为C,将".cpp"扩展名编译为C++.

不要忘记,也可以在每个文件的基础上更改属性.


Lundin.. 5

这是因为Microsoft从未优先考虑符合C语言标准.在过去的20年左右,他们主要关注的是C++.因此Visual Studio应被视为C++编译器.

在"C模式"下,它仍然对第一个C标准C90有疑问.他们花了很长时间才试图获得C99合规性,他们仅在近几年才为此做出了一些努力.它仍然不完全符合C99标准.据我所知,没有C11或C17合规计划.

因此,如果标准一致性对您很重要,则必须寻找另一个C编译器.



1> msc..:

Visual Studio 2017不支持任何C11功能.您可以将Intel C编译器插入Visual Studio(支持C11)或使用ClangGcc.

Quora回答:

在Visual Studio中添加内置的CLANG支持

创建新项目

在"平台工具集"的项目属性(常规)中选择"Visual Studio 2017 - 与Microsoft CodeGen一起使用(v141_clang_c2)

在C/C++"语言"部分打开"C语言"标准列表,在这里您可以找到所有C标准今天相关的C89,C99,C11 ...选择您想要的那个

在此之后(与以往一样)VS2017将编译扩展名为".c"的文件作为C,将".cpp"扩展名编译为C++.

不要忘记,也可以在每个文件的基础上更改属性.



2> Lundin..:

这是因为Microsoft从未优先考虑符合C语言标准.在过去的20年左右,他们主要关注的是C++.因此Visual Studio应被视为C++编译器.

在"C模式"下,它仍然对第一个C标准C90有疑问.他们花了很长时间才试图获得C99合规性,他们仅在近几年才为此做出了一些努力.它仍然不完全符合C99标准.据我所知,没有C11或C17合规计划.

因此,如果标准一致性对您很重要,则必须寻找另一个C编译器.


推荐阅读
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 本文介绍了GTK+中的GObject对象系统,该系统是基于GLib和C语言完成的面向对象的框架,提供了灵活、可扩展且易于映射到其他语言的特性。其中最重要的是GType,它是GLib运行时类型认证和管理系统的基础,通过注册和管理基本数据类型、用户定义对象和界面类型来实现对象的继承。文章详细解释了GObject系统中对象的三个部分:唯一的ID标识、类结构和实例结构。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • C语言自带的快排和二分查找
    Author🚹:CofCaiEmail✉️:cai.dongjunnexuslink.cnQQ😙:1664866311personalPage&#x ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
author-avatar
Triste夏木_668_365
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有