我将函数i 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
答案 0 :(得分:3)
是的,你可以这样做但你必须在标题和两个文件中声明函数static。
另外,请不要在函数中留下空参数,而是使用void,否则表明函数可能是variadic。
所以基本上你想要:
static void getSettings(void);
和
static void getSettings(void)
{
printf(" in file 1 \n");
}
和
static void getSettings(void)
{
printf(" In file 2 \n");
}
另请注意,由于@invalid指出,您可能不想要将原型包含在头文件中,因为只有文件范围的函数不需要在头文件中进行原型化如果在使用它之前定义它,可能根本不需要原型化。