【发布时间】:2019-11-20 09:43:21
【问题描述】:
我遇到了一个错误,说 std::size() 不是 std 的成员。然后我找到了这个链接:Why std::size() is not a member of std in gcc 8.2.0 最终,在我使用g++ -std=c++17 myFile.cpp 编译文件后,我的代码运行良好。现在,我按照上一个链接的建议尝试了g++ -std=c++17 6.cpp -o - 6.out,但它不起作用。有cmets吗?
【问题讨论】:
-
你的问题让我很困惑。看来你已经了解到
std::size是 C++17 的一个特性,而g++默认没有启用这个功能,对吧?那么你的标题似乎暗示你不想每次都明确启用它,但你的问题似乎是关于如何指定输出文件名的误解?请尝试澄清您的要求。这将有助于准确解释您的期望,以及会发生什么,包括任何错误消息。 -
g++ -std=c++17 6.cpp -o - 6.out看起来在-o和文件名之间多了一个-(破折号)。 -
您不应该只是将来自 Internet(甚至是 Stack Overflow)的命令复制并粘贴到您的计算机上不了解它们在做什么。你有一个工作命令
g++ -std=c++17 myFile.cpp。现在阅读-o正在做什么以及应该遵循的内容,然后才将其添加到您的构建命令中。 -
不,没有什么可以摆脱你的构建命令中的
-std=c++17。唯一的可能是升级编译器版本,但这样的版本尚不存在。最新的gcc版本默认使用 C++14。如果你想使用 C++17 的特性,你必须告诉你的编译器。 -
编译器正常运行所需的标志数量与您无关,因为大多数时候您不应该手动调用它。考虑使用 makefile(或其他构建系统)。
标签: c++