我们可以通过给出静态来在C中的2个不同文件中使用相同的函数名吗? 像file1.c中的静态myfunc()和file2.c中的静态myfunc()。 链接器会理解范围,还是会抛出错误?
答案 0 :(得分:8)
static
告诉函数或数据元素仅在编译单元 范围内已知,因此您的问题的答案是是的,您将能够在两个不同的编译单元中声明具有相同名称的静态函数和,即使具有相同的签名。
答案 1 :(得分:5)
是的,这是可以的static
关键字的一个点。
答案 2 :(得分:2)
声明为static
的全局名称具有内部链接,这意味着此类名称对于翻译单元是私有的。更具体地说,在一个翻译单元中,名称的所有static
声明都指向相同的对象或功能,但在每个翻译单元中,这样的声明指的是不同的对象或功能。 (相比之下,所有带有外部链接的名称都指的是整个程序中的同一个实体。)