void func_print(int value) {
std::cout << “int” << std::endl;
}
void func_print(void* value) {
std::cout << “void” << std::endl;
}
int main() {
func_print(0);
func_print(NULL);
}
我似乎找不到。我的编译器可能会损坏,因为它给我带来了流浪错误,无法找到错误所在。
g++: error: -E or -x required when input is from standard input
c.cpp:3:5: error: stray ‘\342’ in program
std::cout << “int” << std::endl;
^
c.cpp:3:5: error: stray ‘\200’ in program
c.cpp:3:5: error: stray ‘\234’ in program
c.cpp:3:5: error: stray ‘\342’ in program
c.cpp:3:5: error: stray ‘\200’ in program
c.cpp:3:5: error: stray ‘\235’ in program
c.cpp:6:5: error: stray ‘\342’ in program
std::cout << “void” << std::endl;
^
c.cpp:6:5: error: stray ‘\200’ in program
c.cpp:6:5: error: stray ‘\234’ in program
c.cpp:6:5: error: stray ‘\342’ in program
c.cpp:6:5: error: stray ‘\200’ in program
c.cpp:6:5: error: stray ‘\235’ in program
c.cpp: In function ‘void func_print(int)’:
c.cpp:3:21: error: expected primary-expression before ‘int’
std::cout << “int” << std::endl;
^
c.cpp: In function ‘void func_print(void*)’:
c.cpp:6:21: error: expected primary-expression before ‘void’
std::cout << “void” << std::endl;
^
c.cpp: In function ‘int main()’:
c.cpp:11:20: error: call of overloaded ‘func_print(NULL)’ is ambiguous
func_print(NULL);
^
c.cpp:2:6: note: candidate: void func_print(int)
void func_print(int value) {
^
c.cpp:5:6: note: candidate: void func_print(void*)
void func_print(void* value) {
这里的所有错误都通过消息进行了解释,尽管我不完全知道这是什么错误。
答案 0 :(得分:1)
当您发送0作为参数时会调用哪些函数
通话不明确。重载解析都不推荐使用这两个函数,因为0既是int文字,也是指针文字。模棱两可的调用会使程序格式错误,因此不需要编译器来接受它。这是编译器告诉您的:
error: call of overloaded ‘func_print(NULL)’ is ambiguous
std::cout << “void” << std::endl;
这是错误的,因为那里的“
(左双引号)不是有效字符。您极有可能尝试编写字符串文字。字符串文字使用"
(引号)字符,这是相似的。这是编译器告诉您的:
error: expected primary-expression before ‘void’
它没有应由其自己(应该是)编译的任何包含或标头
您的假设是错误的。除了前面提到的问题之外,std::cout
(或std
名称空间中的任何其他内容)必须在不包含标准头的情况下使用。