我无法调用我在Linux中的Pico编辑器中编写的外部函数。程序应调用外部函数,它们都用C语言编写。
#include????
void calcTax()
float calcfed()
float calcssi()
//存根程序
#include"FILE2"???or do I use"./FILE2"// not sure which to use here or what extension the file should have. .c or .h and if it is .h do I simply change the file name to file.h?
#include<stdio.h>
#define ADDR(var) &var
extern void calctaxes()
int main()
{
}
我正在使用gcc编译,但它不会编译。两个文件都在同一目录中,并具有.c扩展名
我是一名新生,请耐心等待。
答案 0 :(得分:4)
通常,当您希望一个编译单元中的函数调用另一个编译单元中的函数时,您应该创建一个包含函数原型的头文件。头文件可以包含在两个编译单元中,以确保双方在接口上达成一致。
calctax.h
#ifndef calctax_h_included
#define calctax_h_included
void calctaxes(void);
/* any other related prototypes we want to include in this header */
#endif
请注意,函数不需要extern
,只需要全局数据。此外,由于该函数不带参数,您应该将void
放在参数列表中,并且在原型的末尾还需要一个分号。
接下来,我们可以将此头文件包含在实现该功能的.c文件中:
calctax.c
#include "calctax.h"
void calctaxes(void)
{
/* implementation */
}
最后,我们在调用函数的主.c文件中包含相同的头文件:
的main.c
#include "calctax.h"
int main(int argc, char **argc)
{
calctax();
return 0;
}
您可以使用
编译和链接这些内容% gcc -o main main.c calctax.c
答案 1 :(得分:0)
通常,您不想包含.c
实施文件。正常的做法是将两个源文件构建到对象中:
cc -o file1.o file1.c
cc -o file2.o file2.c
然后将它们链接到最后的可执行文件中:
cc -o example file1.o file2.o
要允许在两个.c
文件之间调用函数,您需要创建一个标题(.h
)文件,该文件包含您对共享感兴趣的所有内容的函数声明。对于您来说,这可能类似header.h
,包含:
void calcTax(void);
float calcfed(void);
float calcssi(void);
然后,从实现文件中只需#include "header.h"
,您需要了解这些函数。