gcc - 运行cpp文件而不编译

标签 gcc g++ mingw-w64

如何直接运行只读存储(如 CD 驱动器)中存在的 C++ 文件,而不使用 g++ 生成可执行文件?必须有一些论据才能使其发挥作用。

最佳答案

一个C/C++程序从制作到运行的过程:

  1. 您编写程序的源代码。

  2. 编译器在这里将源代码编译为目标文件。 注意:请记住,该程序在此阶段无法执行。它只是一个目标文件。如果您曾经开发过较大规模的程序,您就会知道这一点,但如果您还没有,那么这里是它的工作原理。还记得在程序中使用这些头文件吗?这些头文件只是告诉编译器有些东西没有在你的程序中定义。他们在别的地方。因此,您的编译将程序编译为目标文件,省略了具有原型(prototype)的内容(位于头文件中)。

  3. 这是非常重要的一点。这里一个叫做“链接器”的程序开始发挥作用。链接器所做的就是获取编译器创建的所有目标文件并将它们组合成一个。举例来说,您的编译器创建了一个目标文件。现在,您正在使用数学库或标准库中的任何内容。编译器链接器包(通常称为编译器)附带了这些标准库定义的目标文件。因此,链接器获取您的目标文件并将其与包中的其他目标文件组合,然后将其转换为可执行文件。这是您可以运行的文件。其他都不能直接运行。

要运行源代码,流程已经解释过了,我们必须使用 g++。现在

我从你的问题中了解到的是,你想知道一个程序在正确编译和链接后是否可以运行(因此生成了可执行文件)。答案是肯定的。

另外,可能听起来很奇怪,我知道有一个名为 Cling 的解释器,可以用来绕过 C++ 程序的编译。 毕竟 C++ 通常被视为一种编译语言。然而,任何编程语言都可以实现为编译器或解释器,而 Cling 恰好是基于 LLVM 和 Clang 的交互式 C++ 解释器。 仔细看看this

关于gcc - 运行cpp文件而不编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70404363/

相关文章:

c++ - 使用 C++ 将半字写入闪存时的 ARM Cortex-M HardFault 异常

c++ - gcc 会跳过这个有符号整数溢出检查吗?

c++ - FPU 命令 FLDL 将 ST0 中的 double 转换为 long double

gcc - 使用cmake和mingw-w64编译测试程序出错

c++ - 在 Mingw 64 下使用 wxWidgets 3.0.2 库时遇到问题

java - 用于从 C 生成数据绑定(bind)的开源解析器?

c++ - 您如何使用运算符 | 创建与现有 View 交互的自己的 View ?

c++ - 警告 : conversion to 'double' from 'long int' may alter its value

c++ - “变量”声明为 'inline' 字段

c++ - 共享库未在函数中链接