我有点不知道为什么编译器不会发出任何警告。
int32_t CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int32_t nCmdShow)
{
//..
}
以上是我特定于Windows的主要功能。请注意,lpCmdLine
参数的类型为LPSTR
,typedef
为char *
。
现在,我已经使用以下原型定义了一个函数:
void COM_ParseCmdLine(uint8_t *lpCmdLine);
当我将lpCmdLine
变量传递给此函数时,它按预期运行并给出正确的结果,因为命令行字符为8位且十进制值为正。
然而,我有点惊讶的是,如果我们尊重uint8_t *
与char *
的对比,编译器不会警告我们可能会失去这个标志。
答案 0 :(得分:2)
将编译警告级别设置为/Wall
将产生上述警告。
答案 1 :(得分:0)
char
类型具有实现定义的signedness,这意味着它可以等于signed int
或unsigned int
,从编译器到编译器。
因此,uint8_t
很可能与您特定系统上的char
100%兼容,然后您就不会收到任何警告。