C语言的内联函数默认为内部链接,所以不阻止其他文件定义同名外部函数。但如果在其他文件中定义了同名外部函数,则在定义内联函数的文件中调用此函数属于未指定行为,该调用可能会调用外部函数。
注意由于在一个文件中调用函数前需要声明,并且该声明不能和定义冲突,所以即便外部函数与内联函数的原型不同,也做不到在定义内联函数的文件中声明此外部函数,因为对外部函数的声明会和内联函数的定义冲突。此时如果在定义内联函数的文件中又实际调用了外部函数,则调用形式不满足外部函数的实际定义,行为更加危险。
Read More »