多个.c和.h(方法、变量)相互调用,gcc编译运行

本文详细介绍了一种C语言下的模块化编程方法,通过实例演示了如何利用头文件和源文件进行函数声明与定义,实现了代码的复用与管理。同时,文章还展示了全局变量的外部引用及初始化过程,强调了C语言编程中变量作用域的重要性。

头文件arithmetic.h源文件arithmetic..c

头文件main.h源文件main.c

arithmetic.h中声明

int Add(int arg0, int arg1);
int Sub(int arg0, int arg1);

arithmetic.c实现 

#include "arithmetic.h"
float PI = 3.14;
int Add(int arg0, int arg1)
{
    return arg0+arg1;
}
int Sub(int arg0, int arg1)
{
    return arg0-arg1;
}

main.h声明

void myprint1(void);
void myprint2(int arg0);

main.c实现且调用arithmetic.c的方法

#include <stdio.h>
#include "main.h"
#include "arithmetic.h"
int main(void) {
    int sum = 0;
    int diff = 0;
    sum = Add(1, 2);
    diff = Sub(2, 1);
    myprint1();
    myprint2(sum);
    myprint2(diff);
    getchar();
    return 0;
}

void myprint1(void)
{
    printf("调用打印方法成功\n");
}
void myprint2(int arg0)
{
    printf("arg0=%d\n",arg0);
}

 运行cmd,gcc编译运行。gcc main.c arithmetic.c -o main

 

变量调用。全局变量分别申明于main.c和arithmetic.c。用extern 表示使用外部变量。

arithmetic.h中声明增加Circle(),initValue(),即

int Add(int arg0, int arg1);
int Sub(int arg0, int arg1);
float Circle(int arg0);
void initValue();

arithmetic.c中

#include "arithmetic.h"
float PI = 3.14;
int Add(int arg0, int arg1)
{
    return arg0+arg1;
}
int Sub(int arg0, int arg1)
{
    return arg0-arg1;
}
float Circle(int arg0)
{
    return arg0*PI;
}
void initValue()
{
	extern int global_variate;
	global_variate = 100;
}

main.h

void myprint1(void);
void myprint2(int arg0);
void myprint3(float arg0);

 main.c

#include <stdio.h>
#include "main.h"
#include "arithmetic.h"
extern float PI;
int global_variate = 0;

int main(void) {
    int sum = 0;
    int diff = 0;
    sum = Add(1, 2);
    diff = Sub(2, 1);
    myprint1();
    myprint2(sum);
    myprint2(diff);
    myprint3(PI);
    float c = Circle(2);
    myprint3(c);
    PI = 3;
    myprint3(PI);
    c = Circle(2);
    myprint3(c);
    myprint2(global_variate);
    initValue();
    myprint2(global_variate);
    getchar();
    return 0;
}

void myprint1(void)
{
    printf("调用打印方法成功\n");
}
void myprint2(int arg0)
{
    printf("arg0=%d\n",arg0);
}
void myprint3(float arg0)
{
    printf("arg0=%.2f\n",arg0);
}

 不在源文件路径执行cmd则用绝对路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值