GCC 编译 C 语言文件

GCC 编译 C 语言文件

题目要求

请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c
要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b)
此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回
主程序 main1.c,定义并赋值两整型变量,然后调用函数 x2x ,将 x2x 的返回结果printf出来

  1. 请在 ubuntu 系统用 gcc 命令行方式编译主程序 main1.c 并运行;
  2. 请在 windows 系统下用你熟悉的编译工具编译主程序 main1.c 并运行。

在 Ubuntu 下编译并运行程序

创建程序

首先使用 touch main.c 进行程序源文件的创建

创建成功如下:

在文件中编辑号代码之后进行保存,代码如下:
main.c :

#include<stdio.h>
#include<math.h>
#include"sub1.c"

extern float xx(int a,int b);

int main(){
    int a,b;
    scanf("%d %d",&a,&b);
    float c = x2x(a,b);
    printf("结果c是:%.5f",c);
    return 0;
}

sub1.c :

#include<stdio.h>
#include<math.h>

float x2x(int a,int b){
    float c = a;
    c /= b;
    return c;
}

gcc 编译运行

由于目标文件是多文件
编辑并保存源文件之后,通过gcc命令进行编译并运行,指令如下:

gcc main.c -o main
./mian

但是由于多文件编译,可以直接进行编译并运行,但是不够严谨,指令如下:

gcc main.c -o mian
./main

运行如下:

根据对 c 语言的汇编与反汇编的分析,所以应该将所有 .c 源文件进行预处理、编译、汇编为 .o 文件后,统一进行链接,最后编译成可执行文件,指令如下:

gcc -c main.c -o main.o
gcc -c sub1.c -o sub1.o
gcc main.o sub1.o -o main
./main

Windows 下编译运行

本人使用 clion 进行编译运行

由图片可见,只要主函数所在源文件引用其他 .c C语言文件,并使用extern语句引用函数,即可调用相对应的函数,直接编译运行即可

在 Win 下与在 Ubuntu 编译运行对比

在 Ubuntu 下1使用这种方法则不需要使用 extern 关键字对多个源文件中的函数进行扩展,而是需要引入单独的 .h 头文件对函数进行定义,方法如下:


sub1.h 代码如下:

#ifnedf SUB1_H
#define SUB1_H

float x2x(int a,int b);

#endif //SUB1_H

这种格式的代码在 Windows 上不起作用,在 Windows 环境下,只能使用相对应的 extern 关键词(可以不用)并引入对应的 .c 文件,进行函数调用

posted @ 2022-09-01 00:12  ppqppl  阅读(47)  评论(0编辑  收藏  举报