C++ function is ambiguous when using type labels
我使用的堆栈定义了这些类型标签和函数:
1 2 3 4 | typedef const char * FONAFlashStringPtr; typedef uint8 boolean; // uint8 is replaced with unsigned char void HTTP_para_start(FONAFlashStringPtr parameter, boolean quoted = true); |
调用函数时,我使用了fonaflashstringptr和true/false,它们定义为1和0,但我得到了以下输出:
'HTTP_para_start' is ambiguous ' Candidates are: void
HTTP_para_start(const char *, unsigned char)
号
不明白为什么会失败,他们是同一类型的。编译器不应该遍历类型标签吗?
编辑
结果是一个Eclipse错误,Project->Clean没有解决,但是工作区重启解决了。
例如,以下错误相同:
1 2 3 4 5 6 7 8 9 | typedef const char * FONAFlashStringPtr; typedef unsigned char boolean; // uint8 is replaced with unsigned char void HTTP_para_start(FONAFlashStringPtr parameter, boolean quoted = true) {} void HTTP_para_start(FONAFlashStringPtr parameter, bool quoted = true) {} int main() { HTTP_para_start("", 1); // you say you define true to be 1 } |
一般来说,因为你写C++,而不是C,所以创建额外的类布尔类型是没有意义的。C++获得EDCOX1×1,使用它。并且不要定义隐藏内置关键字的宏(请参阅此答案以供参考)。
至少,您的
1 2 | #define true ((unsigned char)1) #define false ((unsigned char)0) |
号