1>------ 已启动全部重新生成: 项目: tmp, 配置: Debug Win32 ------
1>main.c
1>c:\visualstudioprojects\tmp\tmp\main.c(54): warning C4477: “scanf”: 格式字符串“%d”需要类型“int *”的参数,但可变参数 1 拥有了类型“int”
1>c:\visualstudioprojects\tmp\tmp\main.c(54): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>c:\program files (x86)\windows kits\10\include\10.0.15063.0\ucrt\stdio.h(1272): note: 参见“scanf”的声明
1>c:\visualstudioprojects\tmp\tmp\main.c(66): warning C4477: “printf”: 格式字符串“%d”需要类型“int”的参数,但可变参数 1 拥有了类型“Kong *”
1>tmp.vcxproj -> C:\VisualStudioProjects\tmp\Debug\tmp.exe
1>已完成生成项目“tmp.vcxproj”的操作。
========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 ==========
c:\visualstudioprojects\tmp\tmp\main.c(54): warning C4477: “scanf”: 格式字符串“%d”需要类型“int *”的参数,但可变参数 1 拥有了类型“int”
我相信你的编译器也一定有这个警告
54行 scanf 有一个 %d,这个 %d 需要一个 int 指针的参数,但现在这个参数不是int指针,而是int类型
#include<stdio.h>
struct Test
{
int num;
char str[10];
};
int main(void)
{
struct Test test = {0};
struct Test *p = &test;
scanf("%d", &test.num);
scanf("%d", &p->num);
return 0;
}
多留意警告,编译器不会平白无故报警告
|