Visual Studio c ++包含字符串最大长度

Sco*_*ter 11 c++ include visual-studio

我一直在尝试在Windows上编译Qt,我遇到了一个有趣的问题,因为#includes失败了,错误是所包含的文件不存在("没有这样的文件或目录").但是文件确实存在.执行包含的文件是自动生成的"moc"文件(由Qt制作),其中包含如下所示的包含:

#include "../../../../../../../../qt-everywhere-opensource-src-4.8.2/examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.h"

包含的字符串长度为127个字符.在构建中生成和编译了许多"moc"文件,但只有像这样(127+个字符)长度很长的文件才会失败.

有问题的文件恰好位于UNIX系统上,通过Samba共享到Windows.我能够通过创建一个符号链接并在受影响的文件中用"qt-4.8.2"替换"qt-everywhere-opensource-src-4.8.2"来解决这个问题.结果包括:

#include "../../../../../../../../qt-4.8.2/examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.h"

只有102个字符,工作得很好.

我四处搜索,找不到任何参考.我也不能在Qt构建之外复制问题(只是制作任意长的文件名并试图包含它们).因此nmake,Qt创建的makefile 在某种程度上可能会在运行时执行某些操作,cl从而导致它以某种方式拒绝long包含.

有没有人有这方面的任何其他信息?

Sin*_*all 1

由于这是用来查找包含的文件,因此我倾向于认为它与操作系统的文件路径限制有关。

也许预处理器的实现也在某种程度上限制了它,但这对于每个编译器都是特定的。