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是乱码
image
如果在main上面增加函数声明,
void test(ModbusTcpInfo *a ,char *b);
编译时就会提示
image
避免bug产生。

posted @ 2022-02-16 21:43  zhaogaojian  阅读(75)  评论(0编辑  收藏  举报