我在Bruce Eckel的Thinking in C++中读到,当C++编译器遇到一个函数时,它使用它的名称和参数来装饰它的名字.对于函数,int func(char ch); 它将它的名称装饰为_func_char它不使用返回类型.
在这种情况下,在下面的程序中,如果在函数名称修饰期间没有存储返回类型,编译器如何抱怨"从int到const char*的无效转换"?有人可以澄清一下吗?
#include <iostream>
using namespace std;
int func()
{
int i = 5;
return i;
}
int main()
{
string str = func();
}
Run Code Online (Sandbox Code Playgroud)
符号(不仅仅是函数)名称修改在链接阶段发挥作用.您收到编译错误.
编译器没有看到错位的名称.它只是看到你有一个被调用的函数func,它返回一个int并且没有参数,所以可以告诉你你的代码是非法的.
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |