gpt4 book ai didi

c++ - 为什么 VS C++ 中的路径包含正斜杠而不是反斜杠?

转载 作者:行者123 更新时间:2023-11-30 03:55:19 29 4
gpt4 key购买 nike

我得到了数以千计的文件,其中包含带正斜杠的文件

#include <this/thread.hpp>

为什么?原始程序是用 VS 2008 编写的。

这会导致 fatal error C1083

如果我将路径更改为 #include "..\this\thread.hpp" 它会找到文件

最佳答案

Windows 接受正斜杠和反斜杠作为路径分隔符。至少从 Windows XP 开始。

我无法读心术,但我可以猜测以(潜在的)可移植性和/或标准合规性的名义使用了正斜杠,因为包含指令中的反斜杠在 c++03 中具有未定义的行为。

c++03 §2.8/2:

If either of the characters ’ or \, or either of the character sequences /* or // appears in a q-char-sequence or a h-char-sequence, or the character " appears in a h-char-sequence, the behavior is undefined.

根据草案,c++11 中的措辞已更改。行为不再是未定义的,但仍然是实现定义的。

c++11 草案 §2.9/2

The appearance of either of the characters ’ or \ or of either of the character sequences /* or // in a q-char-sequence or an h-char-sequence is conditionally supported with implementation-defined semantics, as is the appearance of the character " in an h-char-sequence.

关于你的错误:

If I change the path to #include "..\this\thread.hpp" it finds the file

密切注意您的两个不同的包含指令。有比路径分隔符更多的区别。首先,正斜杠版本不引用父路径( ../ ),其次路径包含在 < > 中在这种情况下这是错误的,因为路径似乎是相对于当前文件的。参见 https://stackoverflow.com/a/21594/2079303了解更多详情。

关于c++ - 为什么 VS C++ 中的路径包含正斜杠而不是反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29119638/

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