gcc編譯位於不同文件下的.c文件。

我在day2文件下創建了一個main.c函數,然後一個add文件夾,一個sub文件夾。其中add文件下有add_int.c,add_float.c,add.h;然後在sub文件夾中有sub_int.c,sub_float.c,sub.h文件。文件佈局,這裏先省略各種.o文件然後main.c的內容是:

#include <stdio.h>
#include "add.h"
#include "sub.h"
int main(void)
{
    int a = 10,b = 12;
    float x = 1.23456,y = 9.87654321;
    printf("int a+b IS:%d\n",add_int(a,b));
    printf("int a-b IS:%d\n",sub_int(a,b));
    printf("float x+y IS:%f\n",add_float(a,b));
    printf("float x-y IS:%f\n",sub_float(a,b));
    return 0;
}

add_int.c:

int add_int(int a,int b)
{
    return a+b;
}

add_float.c:

float add_float(float x,float y)
{
    return x+y;
}

add.h:

#ifndef __ADD_H
#define __ADD_H

extern int add_int(int a,int b);
extern float add_float(float x,float y);
#endif

sub_float.c:

float sub_float(float x,float y)
{
    return x-y;
}

sub_int.c:

int sub_int(int a,int b)
{
    return a-b;
}

sub.h:

#ifndef __SUB_H
#define __SUB_H

extern float sub_float(float x,float y);
extern int sub_int(int x,int y);
#endif#ifndef __SUB_H
#define __SUB_H

extern float sub_float(float x,float y);
extern int sub_int(int x,int y);
#endif

這樣我們可以使用

gcc -o main1.out main.c -I ./add/ -I ./sub/ add/add_int.c add/add_float.c sub/sub_int.c sub/sub_float.c

其中main1.out是你生成的可執行文件的名字,然後 -I ./add/表示的是你的當前文件下的add文件下的一個路徑。這裏使用的-I是讓編譯器從add和sub下尋找相應的文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章