MSVC支持的C语言子集

MSVC支持的C语言子集,c,visual-c++,compilation,C,Visual C++,Compilation,因此,来自VisualStudio2019的微软MSVC不支持C99或更高版本,但它支持C89和C99的一些构造 GCC C编译器(而非C++)编译器是否可以选择使用一个标准来保证源代码也可以用MSVC编译?如果它在GCC下使用-std=iso9899:199409-pedantic编译,MSVC可以编译它吗?确保它使用MSVC和GCC编译的唯一方法是使用这两个工具集编译代码。除了语言构造之外,在处理编译器定义的预处理器符号、预处理器可以处理的内容等方面也存在许多差异 我个人在用C++和CsAN

因此,来自VisualStudio2019的微软MSVC不支持C99或更高版本,但它支持C89和C99的一些构造


GCC C编译器(而非C++)编译器是否可以选择使用一个标准来保证源代码也可以用MSVC编译?如果它在GCC下使用-std=iso9899:199409-pedantic编译,MSVC可以编译它吗?

确保它使用MSVC和GCC编译的唯一方法是使用这两个工具集编译代码。除了语言构造之外,在处理编译器定义的预处理器符号、预处理器可以处理的内容等方面也存在许多差异

我个人在用C++和CsAN构建C++代码方面做了大量的工作,我碰到了许多小问题,这些问题需要用两个工具集来构建。C/C++语言标准有助于使代码具有可移植性,但您仍然必须通过多个工具集来运行代码,才能“干净地”构建代码

如果您希望代码具有健壮的可移植性,那么还应该为多个体系结构构建代码

对于我的GitHub库,我在MSVC上构建了ARM、ARM64、x86、x64,VS 2015更新3/VS 2017/VS 2019,目标是Win32 desktop、UWP和Xbox One。我还为x86和x64构建了用于Windows的clang。每一个都会发现稍微不同的问题,但最终的结果是更便于携带


确保使用MSVC和GCC构建代码的唯一方法是使用这两种工具集构建代码。除了语言构造之外,在处理编译器定义的预处理器符号、预处理器可以处理的内容等方面也存在许多差异

我个人在用C++和CsAN构建C++代码方面做了大量的工作,我碰到了许多小问题,这些问题需要用两个工具集来构建。C/C++语言标准有助于使代码具有可移植性,但您仍然必须通过多个工具集来运行代码,才能“干净地”构建代码

如果您希望代码具有健壮的可移植性,那么还应该为多个体系结构构建代码

对于我的GitHub库,我在MSVC上构建了ARM、ARM64、x86、x64,VS 2015更新3/VS 2017/VS 2019,目标是Win32 desktop、UWP和Xbox One。我还为x86和x64构建了用于Windows的clang。每一个都会发现稍微不同的问题,但最终的结果是更便于携带


你是否有理由关心MSVC是否可以编译它?GCC mingw可以将ABI与MSVC兼容的Windows PE对象文件作为目标,因此用户可以使用它进行构建,或者您甚至可以将二进制对象文件/库文件发送给他们使用,这样他们就不需要任何工具


除非您确实有理由想使用该编译器,而不仅仅是允许该编译器的用户与您的代码链接,否则监管您的代码库以确保与已知已损坏/故意损坏的编译器兼容似乎不是一项有价值的活动。

您是否有理由关心MSVC是否可以编译它?GCC mingw可以将ABI与MSVC兼容的Windows PE对象文件作为目标,因此用户可以使用它进行构建,或者您甚至可以将二进制对象文件/库文件发送给他们使用,这样他们就不需要任何工具


除非您确实有理由想使用该编译器,而不仅仅是允许该编译器的用户与您的代码链接,否则监管您的代码库以确保与已知已损坏/故意损坏的编译器兼容似乎不是一项有价值的活动。

我想您只需要测试您想要的功能,答案可能是否定的,因为MSVC甚至会从标准中对C++产生一些例外。然后,你可以在Windows中使用GCC而不是Visual C.STD= C90……我想你只需要测试你想要的特性……答案可能是否定的,因为MSVC甚至会从标准中对C++产生一些例外。然后,你可以在Windows中使用GCC而不是Visual C.STD= C90…