【问题标题】:gcc.exe vs cpp.exe vs g++.exegcc.exe vs cpp.exe vs g++.exe
【发布时间】:2022-07-02 16:22:48
【问题描述】:

我使用 Visual Studio Code 进行编码,而对于 C/C++,我使用 MinGW。当我单击配置默认构建任务时,我可以看到各种选项,例如 C/C++:cpp.exe 构建活动文件(编译器:C:/MinGW/bin/cpp.exe),C/C++:g++.exe 构建活动文件(编译器:C:/MinGW/bin/g++.exe),C/C++:gcc.exe 构建活动文件(编译器:C:/MinGW/bin/gcc.exe),C/C++:g++.exe 任务生成调试器(编译器:C:/MinGW/bin/g++.exe) C/C++:gcc.exe 调试器生成的任务(编译器:C:/MinGW/bin/g++.exe)和另外两个 g++ & GCC 构建活动文件....任何人都可以解释所有这些之间的需求、作用和区别。还有为什么 cpp.exe 没有“调试器生成的任务”选项。提前谢谢你。

【问题讨论】:

    标签: c++ visual-studio-code gcc g++


    【解决方案1】:
    • cpp - 替换宏等的 C 和 C++ 预处理器。由于您没有“调试器生成的任务”为此,它很可能以相同的方式用于调试和发布版本。
    • gcc - 用于编译 C 程序的 C 编译器。
    • g++ - 用于编译 C++ 程序的 C++ 编译器

    【讨论】:

    • 它很可能会以相同的方式用于调试和发布版本。你能否详细说明这部分......它不是像你说的那样的编译器吗一个 C/C++ 预处理器?如果不是……那么为什么在构建当前文件选项的下拉菜单中有选项?
    • @Nikhil 是的,它是一个预处理器,所以如果你有#define FOO(x) ((x)*(x)),它将通过翻译单元并将FOO(something) 的所有用法替换为((something)*(something)) 等。这完成了 翻译单元开始编译之前。
    • 嗨@Ted Lyngmo 我没有得到的是根据你cpp只是一个预处理器而不是编译器但我可以看到cpp.exe选项来构建我的文件..意味着我可以如果我选择它,则构建我的活动文件......构建比编译更复杂的过程。我的问题是,如果它甚至不能编译,因为它不是编译器,那么我怎么能用它构建我的活动文件?
    • @Nikhil 如果您使用cpp.exe“构建”您的文件,您将获得一个预处理文件作为输出。我不确定您是否可以看到结果,但如果可以,您会看到它包含了您拥有的文件 #included 并用它们扩展的内容替换了宏使用。这成为编译器将编译的翻译单元。
    【解决方案2】:

    伙计!我也有同样的困惑。 cpp.exe 生成 exe 文件,我运行它,windows 给我错误,它是 16 位

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 2013-12-14
      • 2011-08-21
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多