我有成千上万个包含正斜杠文件的文件
#include <this/thread.hpp>
为什么?原始程序是用VS 2008编写的。
这会导致致命错误C1083
如果我更改#include "..\this\thread.hpp"
它的路径,则会找到文件
Windows接受正斜杠和反斜杠作为路径分隔符。至少从Windows XP开始。
我看不懂,但我可以猜测正斜杠是在(潜在)可移植性和/或标准合规性的名称下使用的,因为include指令中的反斜杠在c ++ 03中具有未定义的行为。
c ++ 03§2.8/ 2:
如果字符'或\或字符序列/ *或//出现在q字符序列或h字符序列中,或者字符“出现在h字符序列中,则行为是不确定的。
根据草案,措辞在c ++ 11中进行了更改。该行为不再是未定义的,而是仍然定义为实现。
c ++ 11草案§2.9/ 2
实现定义的语义有条件地支持q-char序列或h-char序列中的字符'或\或字符序列/ *或//的出现,以及实现定义的语义的条件支持。 h字符序列中的字符“。
关于您的错误:
如果我将路径更改为#include“ .. \ this \ thread.hpp”,它将找到文件
请密切注意您的两个不同的include指令。比路径分隔符有更多区别。首先,正斜杠版本不引用父路径(../
),其次,路径被封闭,< >
在这种情况下是错误的,因为看起来该路径是相对于当前文件的。有关更多详细信息,请参见https://stackoverflow.com/a/21594/2079303。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句