gpt4 book ai didi

c++ - 我应该如何在 mac 上用 c++ 编译源代码以确保它在遵守 ANSI/ISO 的同时在 Windows Visual Studio 编译器中正确编译

转载 作者:行者123 更新时间:2023-11-28 00:43:51 25 4
gpt4 key购买 nike

我正在上课,期望我们提交的源代码能够在我们教授的计算机上编译。似乎有道理。我真的不想安装 windows 或使用可视化。我的一位同学发帖说下面的代码可以解决问题。对此有什么想法吗?可以改进为更接近严格的 ANSI/ISO c++ 编译吗?

$ g++ -std=c++98 -Wall -Wextra -Werror main.cpp -o outputprogram

我的操作系统是 10.8.xg++ 是:

  i686-apple-darwin11-llvm-g++-4.2

而 gcc 是

 i686-apple-darwin11-llvm-gcc-4.2: 

最佳答案

How should I compile source code in c++ on a mac to ensure it will compile correctly in Windows Visual Studio Complier while adhering to ANSI/ISO

你真的不能那样做。不可能。编译器在不同地方的行为略有不同,有时会导致编译失败和/或程序行为略有不同。对于 Microsoft Compiler,它可以愉快地编译令 G++(通常是模板)感到困惑的代码,反之亦然,即使您不考虑非标准函数和扩展也是如此。因此,测试编译器的唯一可靠方法是使用该编译器。

我个人在开发应该与 g++/cl.exe(cl.exe == 微软编译器)一起工作的代码时遇到的问题。

  1. 与 cl.exe 相比,g++ 慢得离谱,至少在 Windows 上是这样。 (慢 2..5 倍)
  2. g++ 有时无法正常编译模板构造 cl.exe 进程。
  3. cl.exe 无法处理非常大的字符串常量(与 g++ 相比)。
  4. cl.exe (VS2008 express) 无法检测没有 BOM 的 UTF8 编码。
  5. 将编码与 cl.exe 混合(当操作系统使用编码 A 时,源文件在编码 B 中,而您想使用需要编码 C 的函数来显示 wchar_t 字符串)是一场噩梦。
  6. C 标准库函数在 cl.exe/g++ 上有所不同。一个编译器可以具有另一个编译器上不存在的函数(其中一些没有某些字符串 *ncmp 函数),编译器可能具有另一个编译器(strcpy_s)中不存在的非标准函数,并且某些函数对某些参数的行为可能不同(带有“%S”的 sprintf)
  7. 如果包含 windows.h,将 -Wall 传递给 cl.exe 会产生数千条针对无害代码的警告。这些警告无法修复。

可能还有更多,但那是我目前能记住的。

I really do not want to install windows

您可以尝试使用 Wine在 MacOS 上安装 Microsoft Compiler。我预计您将无法安装 Visual Studio IDE使用 wine(您的里程可能会谨慎),但您应该能够运行 Windows Driver Kit 附带的仅命令行 Microsoft 编译器。不过,要以这种方式使用编译器,您必须非常熟悉它,因此将 Windows 安装到虚拟机中可能会容易得多。

关于c++ - 我应该如何在 mac 上用 c++ 编译源代码以确保它在遵守 ANSI/ISO 的同时在 Windows Visual Studio 编译器中正确编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17388101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com