相关疑难解决方法(0)

GCC转储预处理器定义

有没有办法让gcc/g ++从命令行转储它的预处理器定义?我的意思是__GNUC__,__STDC__等等.

gcc g++ c-preprocessor

232
推荐指数
5
解决办法
11万
查看次数

当前gcc的默认C模式是什么(特别是在Ubuntu上)?

当我要求查看cc的当前版本时,我得到了这个.

$ cc --version
cc (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ 
Run Code Online (Sandbox Code Playgroud)

我想知道的是使用c89,c90,c99或c11中的哪一个.

c ubuntu gcc c99 c11

51
推荐指数
3
解决办法
3万
查看次数

如何在各种编译器中定义__cplusplus指令?

我的编译器将其扩展为199711L.那是什么意思?我读到__cplusplus> 199711L表示C++ 11.这个宏有什么可能的扩展,它意味着什么?

c++ compiler-version preprocessor-directive

31
推荐指数
3
解决办法
2万
查看次数

我正在使用的c ++ norme是什么?

最近我遇到了我编写的c ++代码中的编译错误,所以我被问到是否使用的是C++ 11编译器,但老实说我不知道​​如何检查我的编译器版本!所以任何想法如何解决这个问题?

顺便说一句,我正在使用代码块作为IDE,其中包括GG编译器和MinGW的GDB调试器.如果我在Linux下编译我的c ++代码,我应该运行什么命令来了解我的编译器版本?

c++ linux compiler-construction c++11

16
推荐指数
3
解决办法
6万
查看次数

如何在 gcc 8 上使用 std::filesystem?

我已经更新了 gcc 的版本,gcc --version 产生以下输出

    gcc (Ubuntu 8.1.0-5ubuntu1~16.04) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Run Code Online (Sandbox Code Playgroud)

我可以在头文件中包含文件系统而没有任何错误

#include<filesystem>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试访问如下所示的命名空间文件系统时,我收到错误消息

namespace fs = std::filesystem;
Run Code Online (Sandbox Code Playgroud)

错误信息

error: ‘filesystem’ is not a namespace-name
 namespace fs = std::filesystem;
Run Code Online (Sandbox Code Playgroud)

这似乎很奇怪,因为 gcc 8 支持 std::filesystem 并且它在命名空间中不可用,我在访问 std::filesystem 时做错了什么吗?

是的,我用 -std=c++17 构建

c++ gcc namespaces

14
推荐指数
2
解决办法
1万
查看次数

如何确定C++编译器的默认C++标准?

经常提到-std标志应该用于指定编译C++程序时希望使用的标准(例如,-std=c++11-std=gnu++11).一个通常没有解决的相关问题(至少据我所知;例如,参见Dennis根据Oskar N选择的答案高度评价的评论)是如何确定默认的C++标准是什么正在被编译器使用.

我相信可以通过查看手册页(至少对于g ++)来判断,但我想问这是否正确以及是否有更明确/具体的方法:

在描述中-std,手册页列出了所有C++标准,包括GNU方言.在一个特定的标准下,它是相当不明确的,This is the default for C++ code.(C标准有一个类似的陈述:) This is the default for C code..

例如,对于g++/gcc version 5.4.0,这列在下面gnu++98/gnu++03,而对于g++/gcc version 6.4.0,它列在下面gnu++14.

这自然似乎表明了默认标准,但它写得如此不显眼,以至于我并不完全确定.如果是这种情况,也许这对那些对这个同样的问题感到疑惑的人有用.其他C++编译器还有其他方便的方法吗?

编辑:我遇到了这个相关的问题,但那里的答案相当复杂,并没有产生具体的,明确的陈述.也许我应该在得到证实之后将其作为对这个问题的答案.

c++ gcc compilation g++ c++11

10
推荐指数
2
解决办法
3954
查看次数

如何找到我的编译器使用的 C++ 语言标准的默认版本并更改它?

我想知道当我执行类似g++ main.cpp.

我知道我可以运行g++ -v编译器版本,例如返回:

Apple clang version 14.0.0 (clang-1400.0.29.202)
Target: arm64-apple-darwin22.1.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
Run Code Online (Sandbox Code Playgroud)

但我不确定这里使用的默认 C++ 语言版本是什么。

我也知道我可以用来-std=c++(version)更改它,但是,最好将默认值设置为 c++20 以保持最新状态并且不必使用标志。

c++ g++ clang

3
推荐指数
1
解决办法
2707
查看次数

每次需要编译C ++程序时,是否都需要键入-std = c ++ 17(或我要使用的任何标准)?

我拥有Windows 10操作系统,使用VS Code编写我的C ++代码,并使用CMD编译我的程序。我真的不知道PC中的编译器(MinGW,gcc版本6.3.0)使用哪种标准,但是我只想忍受它使用最新的标准(例如C ++ 14或17)。不幸的是,我需要输入在-std=c++17我每次需要使用标准的编译我的程序。如何将所需的标准设置为默认值?

c++ cmd compilation

0
推荐指数
1
解决办法
106
查看次数