Linux c 开发-18 Linux C 开发中要注意声明函数
今天在一个问题上研究了几个小时,最终解决,问题是:在Linux C中,如果不声明函数,也是可以编译的,但是会不检查函数形参类型,假如类型错误的话,不会提示。
用简化代码重现问题:
//网络结构体
typedef struct tcp_info{
char ip[32];
char port[16];
} ModbusTcpInfo;
ModbusTcpInfo gModbusTcpInfo;
void main(int argc, char const *argv[])
{
int a=10;
char *b="123";
test(gModbusTcpInfo,b);
return;
}
void test(ModbusTcpInfo *a ,char *b)
{
printf("b=%s",b);
}
编译gcc test.c
以上代码test(gModbusTcpInfo,b);少加了一个&,但是依然能编译成功,但是运行异常,输出b是乱码
如果在main上面增加函数声明,
void test(ModbusTcpInfo *a ,char *b);
编译时就会提示
避免bug产生。
本博客是个人工作中记录,更深层次的问题可以提供有偿技术支持。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。