【问题标题】:Correcting case of Visual C++ __FILE__ macro更正 Visual C++ __FILE__ 宏的大小写
【发布时间】:2014-09-04 00:56:27
【问题描述】:

this问题有关。

我们有一个代码生成工具(用于跨平台 C++ 源文件),我需要更正____FILE____ 宏返回的路径以具有正确的大小写,以便在 Windows 下生成的源文件仍然可以在区分大小写的系统上编译(例如.Linux 和 OSX)。

我正在使用 Qt,并尝试了 QFileInfo 和 QDir 的几种组合,但它们似乎都将小写路径传递给它。

有什么建议吗?

谢谢

【问题讨论】:

  • 取消定义,添加你自己的__FILE__宏?虽然这不是我推荐的。
  • 为什么不确保目录名称大小写正确?
  • 垫子,你的意思是强制所有开发人员只使用小写路径吗?这不仅仅是一个内部工具,它即将发布并且已经有外部用户,所以这不是我可以强制执行的限制。

标签: c++ visual-studio-2010 qt


【解决方案1】:

我有一些建议,但我不确定它是否可行。

  1. 如果您还没有尝试过。使用 QDir 在目录中搜索正确的路径。

    假设您希望包含文件“C:/Programming/myProject/oneSource.cpp”,然后执行以下操作:将传入路径拆分为“c:”、“programming”、“myproject” , "onesource.cpp"。

    然后您使用 QDir 在“C:”中搜索与“programming”匹配的文件夹(忽略大小写),但使用从 QDir 返回的路径。冲洗并重复。这样您就不会真正将任何错误的路径传递给 QT,它只会使用它本机读取的路径。

  2. 尝试完全相同的方法,但使用不同的库,例如 dirent,甚至是原生 Windows API。

【讨论】:

  • 感谢 Stain,使用 Windows 原生 GetFullPathName() 更正了这种情况,所以我将在调用周围使用 ifdef 并在 Windows 上使用它。
【解决方案2】:

您知道工具中的文件名,因此完全没有理由使用__FILE__ 宏。只需将正确的文件名作为字符串文字发出即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 2013-10-21
    • 2011-07-01
    • 2023-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多