gpt4 book ai didi

c++ - -std=c++ 98 和 OS X 10.10

转载 作者:行者123 更新时间:2023-11-28 02:34:20 24 4
gpt4 key购买 nike

我目前正在尝试在 OS X 10.10 上使用 -std=c++98 标志编译我的程序:

clang++ -std=c++98 -pedantic -W -Wall -Werror *.cpp

g++ -std=c++98 -pedantic -W -Wall -Werror *.cpp

奇怪的是,当我使用 OS 10.10 进行编译时,没有显示任何错误,而使用 GNU/Linux 发行版显示了一些错误。

对于 GNU/Linux 发行版,我有一些错误,因为我使用 s.open(file); 而不是 s.open(file.c_str());但在 OS X 上没有错误,即使使用 s.open(file);

也许这个错误与每个操作系统的文件系统之间存在联系?

最佳答案

你是对的。此代码不应在 C++98 下编译:

#include <fstream>
#include <string>

int main() {
std::string file("/tmp/foo.txt");
std::ifstream s;
s.open(file);
}

从技术上讲,这是 libc++ 中的一个错误,但我怀疑他们会想要修复它。

如果你愿意,你可以使用 libstdc++ 作为标准库进行编译,它没有实现这个功能(至少苹果发布的版本没有)。

[10:13am][wlynch@watermelon /tmp] clang++ -std=c++98 -stdlib=libstdc++ foo.cc
foo.cc:7:12: error: no viable conversion from 'std::string' (aka 'basic_string<char>') to 'const char *'
s.open(file);
^~~~
/usr/include/c++/4.2.1/fstream:518:24: note: passing argument to parameter '__s' here
open(const char* __s, ios_base::openmode __mode = ios_base::in)
^
1 error generated.

关于c++ - -std=c++ 98 和 OS X 10.10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28027438/

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