在c语言中预处理命令行都以井号开头,以井号开头的行和gcc预处理器输出中的'#1“ac”'之类的数字是什么意思?...

以井号开头的行和gcc预处理器输出中的'#1“ac”'之类的数字是什么意思?

我使用打印出C预处理器的输出

gcc -E a.c

输出包含许多行

# 1 "a.c"

# 1 ""

# 1 ""

# 1 "a.c"

# 1 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 1 3

# 19 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 3

# 1 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 1 3

# 31 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 3

# 32 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 3

# 20 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 2 3

我从未在C中看到过这种语法。有人可以解释这是做什么的吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Linux命令行逐步运C语言程序,包括以下步骤: 1. 编写C语言源代码,保存为以.c为后缀的文件,比如test.c。 2. 使用预处理cpp对源代码进预处理。在命令行输入以下命令: ``` cpp test.c > test.i ``` 这将会把预处理后的代码输出到test.i文件。 3. 使用编译cc1对预处理后的代码进编译。在命令行输入以下命令: ``` cc1 test.i -o test.s ``` 这将会把汇编代码输出到test.s文件。 4. 使用汇编as将汇编代码转换为目标文件。在命令行输入以下命令: ``` as test.s -o test.o ``` 这将会把目标文件输出到test.o文件。 5. 使用链接ld将目标文件与所需的库文件链接成最终的可执文件。在命令行输入以下命令: ``` gcc test.o -o test ``` 这将会把可执文件输出到test文件。 在这些步骤gcc命令是一个集成了预处理、编译、汇编、链接等功能的工具,可以直接用它来编译C语言程序,如下所示: ``` gcc test.c -o test ``` 这个命令会将test.c源代码文件编译成可执文件test,其包含了预处理、编译、汇编和链接的所有过程。 ### 回答2: 在Linux命令行逐步运C语言程序涉及cpp、cc1、as和gcc这几个工具。 首先,cpp是C预处理,它负责处理C语言程序预处理指令,例如#include和#define等,解释宏定义并将相应代码插入到程序。要使用cpp,可以在命令行输入cpp 文件名.c -o 文件名.i。这将把C源文件转换为预处理后的文件,命名为文件名.i。 接下来,cc1是GCC的前端编译,它负责将预处理后的文件转换为汇编语言。要使用cc1,可以在命令行输入gcc -S 文件名.i -o 文件名.s。这将把预处理后的文件转换为汇编语言源文件,命名为文件名.s。 然后,as是汇编,在机语言级别上将汇编语言源文件转换为目标文件。要使用as,可以在命令行输入as 文件名.s -o 文件名.o。这将把汇编语言源文件转换为目标文件,命名为文件名.o。 最后,gcc是GNU编译套件的主要编译,它将汇编语言源文件和其它必要的目标文件链接在一起,生成可执文件。要使用gcc,可以在命令行输入gcc 文件名.o -o 可执文件名。这将把目标文件和其它必要的文件链接在一起,生成可执文件,命名为可执文件名。 综上所述,通过依次运cpp、cc1、as和gcc这几个工具,我们可以在Linux命令行逐步运C语言程序。这些工具分别负责C语言程序的预处理、编译、汇编和链接过程,最终生成可执文件。这种逐步运的方式可以更好地理解编译原理和了解程序的编译过程。 ### 回答3: 在Linux命令行,逐步运C语言程序通常需要使用到cpp、cc1、as、gcc命令。 首先,我们需要使用cpp命令对C源代码进预处理。该命令会根据源文件的宏定义、条件编译指令等对源代码进处理,并生成一个新的C源代码文件。假设我们的源代码文件为main.c,我们可以使用如下命令预处理: cpp main.c > main.i 接下来,我们需要使用cc1命令预处理后的C源文件生成汇编代码。该命令会将C源代码翻译为对应的汇编代码,并生成一个汇编文件。我们可以使用如下命令汇编: cc1 main.i -o main.s 然后,我们需要使用as命令将汇编文件转换为目标文件。该命令会将汇编代码转换为二进制机码,并生成一个目标文件。我们可以使用如下命令汇编: as main.s -o main.o 最后,我们需要使用gcc命令将目标文件链接为可执程序。该命令会将目标文件与所需的库文件进链接,并生成一个可执文件。我们可以使用如下命令链接: gcc main.o -o main 执以上步骤后,我们就可以在Linux命令行逐步运C语言程序了。可以通过运./main命令来执生成的可执文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值