如何只包含一个来自不同C文件的函数

我正在做一项家庭作业,为我的操作系统类实现不同的页面替换算法.我遇到的一个问题是我想在不同的C文件中实现每个算法,并且在每个单独的文件中,使用相同的函数名称,如search(),insert(),updatePageTable()等.

但是,当我编译文件时,编译器会抱怨重复的符号.有没有办法从每个不同的算法文件导入主测试函数,并让这些函数引用其文件的功能?

最佳答案 将评论
1
2转换为答案.

您可以通过将文件声明为静态来隐藏文件中的函数;这是一种很好的做法.你将至少有一个不那么隐藏的函数(有时候它将是main(),有时候它将是其他函数).如果非静态函数不是main(),那么你应该有一个声明该函数的头.应该在实现函数的地方使用标头,以确保定义与声明匹配,并且应该在使用函数的地方使用标头,以确保正确使用它.

请注意,给定程序只能包含任何给定函数名的一个外部可见定义.也就是说,最多只能有一个文件定义一个名为insert()的全局(外部可见)函数,但是可能有很多文件定义了一个名为insert()的静态函数 – 但这些文件无法引用,甚至已宣布全球功能.给定的源文件可以访问全局函数insert(),也可以访问自己的静态函数insert(),但不能同时访问它们.

点赞