使用g ++。 我希望在没有任何警告的情况下编译以下代码。
void f(const char* b)
{
std::cout<<"char* called"<<std::endl;
}
void f(const char* format,...)
{
std::cout<<"char*,... called"<<std::endl;
}
f("hello");
f("hello",1);
编译期间出错。暧昧的电话。似乎编译器无法区分这两个函数。但是当我定义这样的第二个函数时:
void f(char* format,...)
{
std::cout<<"char*,... called"<<std::endl;
}
它编译但警告 警告:已弃用从字符串常量转换为char *
const不能用于重载函数,但它仍然会受到影响。 这里发生了什么?