当前位置: 技术问答>linux和unix
多个函数,想放到不同的.c文件中,如何组成一个完整的程序
来源: 互联网 发布时间:2015-12-26
本文导语: 想在linux下做一个简单的 计算机器, 提供 +-*?/ 幂等运算,由add,sub,multi,division,power等函数实现 如果都写在一个文件里, calc.c --------- /* BigInt 是自定义类型 */ BigInt add(BigInt param_1, BigIntparam_2) { ...} BigInt sub(BigInt ...
想在linux下做一个简单的 计算机器,
提供 +-*?/ 幂等运算,由add,sub,multi,division,power等函数实现
如果都写在一个文件里,
calc.c
---------
/* BigInt 是自定义类型 */
BigInt add(BigInt param_1, BigIntparam_2)
{ ...}
BigInt sub(BigInt param_1, BigIntparam_2)
{ ...}
BigInt multi(BigInt param_1, BigIntparam_2)
{ ...}
BigInt division(BigInt param_1, BigIntparam_2)
{ ...}
BigInt poewer(BigInt param_1, BigIntparam_2)
{ ...}
int main( int argc, char* argv[] )
{
...
return 0;
}
这样, calc.c 文件会比较长,而且改任意一个函数,都要重新编译一次
能否把 add,sub,multi,division,power函数的实现 写在不同的.c文件里(注意不是.h),比如分别写到 add.c, sub.c, multi.c, division.c, power.c文件中,
而main()函数放在calc.c文件中
如何可以的话,具体如何实现?
用makefile 可以 ?
本人初学,所以想先了解下什么方法可行,然后再去细看
提供 +-*?/ 幂等运算,由add,sub,multi,division,power等函数实现
如果都写在一个文件里,
calc.c
---------
/* BigInt 是自定义类型 */
BigInt add(BigInt param_1, BigIntparam_2)
{ ...}
BigInt sub(BigInt param_1, BigIntparam_2)
{ ...}
BigInt multi(BigInt param_1, BigIntparam_2)
{ ...}
BigInt division(BigInt param_1, BigIntparam_2)
{ ...}
BigInt poewer(BigInt param_1, BigIntparam_2)
{ ...}
int main( int argc, char* argv[] )
{
...
return 0;
}
这样, calc.c 文件会比较长,而且改任意一个函数,都要重新编译一次
能否把 add,sub,multi,division,power函数的实现 写在不同的.c文件里(注意不是.h),比如分别写到 add.c, sub.c, multi.c, division.c, power.c文件中,
而main()函数放在calc.c文件中
如何可以的话,具体如何实现?
用makefile 可以 ?
本人初学,所以想先了解下什么方法可行,然后再去细看
|
你可以该写makefile,让多个cpp都依赖于同一个h就可以了。函数的实现在cpp中的话,改变其中一个,其它的不用重新编译。
比如:
A1.o : A1.cpp ${lib dir}
$(CPP) $(CXXFLAGS) -c A1.cpp -o $@
A2.o : A2.cpp ${lib dir}
$(CPP) $(CXXFLAGS) -c A2.cpp -o $@
A_objs = ${lib dir}/A1.o
${lib dir}/A2.o
然后你就可以随便用A_objs了
比如:
A1.o : A1.cpp ${lib dir}
$(CPP) $(CXXFLAGS) -c A1.cpp -o $@
A2.o : A2.cpp ${lib dir}
$(CPP) $(CXXFLAGS) -c A2.cpp -o $@
A_objs = ${lib dir}/A1.o
${lib dir}/A2.o
然后你就可以随便用A_objs了
|
可以。
假如你所有的.c放在同一文件夹下,则进入该文件夹,依次执行
gcc -c *.c
gcc *.o -o your_program_name
即可。
如果还有很多头文件,库文件,等,且分别房子不同目录,就要用到makefile了。语法你要先去学学,一下子说不清。要设置各个文件夹,然后用wildcard搜索全部的.c文件,再设置编译目标和编译规则等等。
假如你所有的.c放在同一文件夹下,则进入该文件夹,依次执行
gcc -c *.c
gcc *.o -o your_program_name
即可。
如果还有很多头文件,库文件,等,且分别房子不同目录,就要用到makefile了。语法你要先去学学,一下子说不清。要设置各个文件夹,然后用wildcard搜索全部的.c文件,再设置编译目标和编译规则等等。