**关闭。**此题需要debugging details。目前不接受答复。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
4年前关闭。
Improve this question
考虑:
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) {
这里所有的错误都用消息来解释,虽然我不知道到底是什么错了。
1条答案
按热度按时间wvt8vs2t1#
当你发送0作为参数时,哪些函数会被调用
这个电话是模棱两可的。重载解析并不倾向于使用这两个函数,因为0既是int文字,也是指针文字。二义性调用会使程序的格式不正确,因此编译器不需要接受它。这就是编译器告诉你的:
这是错误的,因为
“
(左双引号)不是有效字符。您很可能尝试过编写字符串文字。字符串文字使用"
(引号)字符,这是类似的。这就是编译器告诉你的:它没有任何包含或头文件,它应该自己编译(据说)
你的推测是错误的。除了前面提到的问题,
std::cout
(或来自std
命名空间的任何东西)在不包含标准头的情况下都不能使用。