c++ - MSVS C++,如何编译扩展名为 *.i 的已预处理文件?

标签 c++ visual-c++ compiler-construction c-preprocessor compiler-flags

相关问题在这里: How can I run the MSVC preprocessor and compiler in two separate steps?

我明确地将 MyFile.cpp(未编译)预处理为 MyFile.i。我想稍后“编译”该文件(明确跳过预处理会很好,但正如相关问题所暗示的那样,这听起来像 MSVS 是不可能的。)

问题:MyFile.i 是一个“无法识别的扩展名”,cl.exe 假定它是一个“目标文件”,导致“无操作” . (请参阅 Microsoft 警告:http://msdn.microsoft.com/en-us/library/zfsbakc5(v=VS.90).aspx,此警告对 MSVS 2005、2008、2010 有效)。

我找不到一个开关来声明它是一个“源文件”(不是目标文件)。相关问题明确使用了“MyFile_preprocessed.cpp”约定,但我真的更愿意使用(更通用的)MyFile.i 约定。

问题:是否有标志可以让我使用 MSVS 编译 MyFile.i

最佳答案

cl.exe有这两个标志

  • /Tc<source file>将文件编译为.c

  • /Tp<source file>将文件编译为.cpp

让您可以将具有任意扩展名的文件编译为 cc++ 文件

我尝试编译 main.i内容如下

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello world \n";
    return 0;
}

cl /Tp main.i并且它像宣传的那样工作

关于c++ - MSVS C++,如何编译扩展名为 *.i 的已预处理文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8617601/

相关文章:

c++ - 使用 C++ 和 Qt 链接到网络驱动器

visual-c++ - Is/nodefaultlib :msvcr100 the proper approach to handling msvcr100. dll vs msvcr100d.dll defaultlib 问题

compiler-construction - 编译器如何处理for循环检查

C++访问url日志

c++ - 返回引用类型的函数

c++ - 静态链接 pion 网络库

javascript - 将另一种语言编译为 Javascript 的实用性?

java - 以 Java 运行一个简单的文本文件

android - 使用预先构建的静态库android

c# - c++\cli 项目依赖的 c++ dll 未复制到 c# 输出目录