遇到了一段代码,它定义并使用了类似于下面的typedef:
typedef char CHAR[10];
void fun(std::string s) {}
int main()
{
CHAR c;
fun(c);
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这是有效的.我的问题是为什么定义和使用这样的typedef以及它是如何工作的.在我看来,CHAR本身不应该起作用,它应该始终是CHAR [10].
此外,如果我更改fun声明以接受std :: string&而不是std :: string,则会抛出编译错误.我不知道为什么.