不理解编译器警告:将unsigned int传递给unsigned int*类型参数
警告触发原因及解决方案
核心错误原因
你对取地址操作的类型推导存在误解,警告是编译器的正确语法提示,和pComponent的赋值逻辑无关:
ConnectToTCPServerEx第一个参数要求为unsigned int *类型:C语言没有原生按引用传递语法,函数需要修改外部handle变量的值时,必须传入变量的指针才能实现回写。pComponent->handle本身是unsigned int类型的普通成员变量,不是指针:pComponent是指向结构体的指针,通过->运算符访问到的是结构体内部存储的无符号整型值,你直接把这个值作为参数传入,就会出现整数转指针的类型不匹配警告。- 你对
&操作的结果推导错误:->运算符优先级高于&,因此&pComponent->handle等价于&(pComponent->handle),含义是取结构体内部handle成员的地址,得到的就是unsigned int *类型的指针,完全符合函数参数要求,并不是你误认为的"指针的指针"。
正确的函数调用写法
ConnectToTCPServerEx( &pComponent->handle, pComponent->serverPortNumber, pComponent->IPaddress, ClientTCPCB, NULL, TCP_TIMEOUT, TCP_ANY_LOCAL_PORT)
内容的提问来源于stack exchange,提问作者ReelThymeOS
相关产品推荐
相关产品推荐

