我有一个函数的原型,我将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] 删除。
我来说两句