在differents C文件中使用函数

引擎

我有一个函数的原型,我将header.h其定义为:

void getSettings();

我在第一个源文件中使用该功能,file1.c例如:

void getSetting(){
    printf(" in file 1 \n");
}

这可行。我有第二个源文件,必须使用此功能,但是具有不同的实现,file2.c例如:

void getSetting() {
    printf(" In file 2 \n");
}

启动第二个文件时,程序崩溃,并显示Segmentation fault (core dumped) 错误消息。并且它没有进入第二个文件的实现。知道我正在尝试的内容是否可行C,如果可以的话吗?

更新以编译我使用的代码:

gcc file2.c -o o2 

和第一个文件

gcc file1.c -o o1

是的,您可以执行此操作,但是必须在标头和两个文件中将函数声明为static。

另外,请不要在函数中留空参数,而应使用void,否则表明函数可能是可变参数。

所以基本上你想要:

static void getSettings(void);

static void getSettings(void)
{
    printf(" in file 1 \n");
}

static void getSettings(void)
{
    printf(" In file 2 \n");
}

还要注意,如@invalid所指出的那样,您可能希望将头文件包含在原型中,因为该函数仅具有文件作用域,不需要在头文件中进行原型化,并且也可以完全不进行原型化。在使用之前定义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章