gpt4 book ai didi

c++ - GCC 或 Clang "moving target"是否有任何 `-std=` 别名值,暗示 "use the latest standard"?

转载 作者:太空宇宙 更新时间:2023-11-04 03:36:18 25 4
gpt4 key购买 nike

我想创建将始终使用 gcc/g++/clang 支持的 C/C++ 标准的“最新”版本的 shell 别名/clang++(C的一个别名,C++的一个别名)。我意识到这可能有多种解释:

  • 最新的 GNU 扩展标准
  • 最新发布的标准(例如 C++14)
  • 最新未发布的标准(例如 C++1z)
  • 编译器完全实现的最新标准(例如 GCC 4.9 的 C++11、GCC 5+ 的 C++14)
  • ...可能还有其他我没有想到的选择

....但是为了这些 shell 别名的目的,只要我知道上面的哪条规则用于确定使用哪种标准模式。

这两个编译器是否包含跟踪移动的“最新标准”的参数别名?我在 GCC 文档中没有看到任何关于别名选项的提及(尽管我的 google-fu 可能只是让我失望);同时,Clang 用户手册提到“C 支持的模式是 [explicit std modes...] 以及这些模式的各种别名”,但我看不到别名本身的记录位置。

最佳答案

您提到的任何编译器中都没有这样的选项。

但是,为包含适当设置的沙箱创建简单的 Makefile 非常容易。我使用这样的东西:

CFLAGS = -Wall -std=c11 -D_XOPEN_SOURCE_=700
CXXFLAGS = -Wall -std=c++14 -D_XOPEN_SOURCE_=700

默认的构建规则可以满足我的其余需求,因此无需使用所有源文件的名称和依赖项来填充 makefile,前提是我始终将单个文件的可执行文件沙盒化。

这样,我只需键入 make foo 即可编译 foo.cfoo.cc。 (或者 make foo.o 如果我不想要一个链接。)功能测试宏设置让我不必记住在我的源文件中也这样做。

并使用非默认编译器进行编译:make foo CXX=clang++。这仍然比 clang++ -Wall -o foo foo.cc

少打字

(其实我用的那个比那个复杂一点。它包括一个.S的后缀规则和一些变量来简化设置优化和调试选项。但原理是一样的。 )

关于c++ - GCC 或 Clang "moving target"是否有任何 `-std=` 别名值,暗示 "use the latest standard"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32484819/

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