C++中所谓的“类型安全链接”是什么?

EXL*_*ine 4 c++

Thinking in C++一书中提到了类型安全链接,但不是很清楚。有人可以详细解释一下吗?提前致谢。

Ank*_*kur 5

类型安全链接强制在链接时传递正确数量和类型的参数。

\n\n

例如,在 C 中,您可以将库函数定义为采用 int,但通过一系列的意外,您可以向它传递一个字符串。

\n\n

C++ 通过强制使用函数原型并使用名称修饰来强制类型安全链接来避免这种错误。来源

\n\n

让我们看一个例子

\n\n
//:Def.cpp\nvoid f(int) {}\n\n//Use.cpp\n// Function misdeclaration\nvoid f(char);\n\nint main() {\n  f(1); // Causes a linker error\n} \n
Run Code Online (Sandbox Code Playgroud)\n\n

function 实际上是f(int),编译器不知道这一点,因为通过显式声明 \xe2\x80\x93 告诉它该函数是 f(char)。编译将会成功。在 C 中,链接器也会成功,但在 C++ 中则不然。

\n\n

这里还给出了非常详细的解释http://www.hpc.unimelb.edu.au/nec/g1af05e/chap9.html

\n

  • 请透露您的来源,即[什么是类型安全链接?](http://www.cplusplus.com/forum/general/12851/) (2认同)