只初始化一次的计数
next_id() 每调用一次应该返回一个新编号(101、102、103…)。补全,输出三次调用的结果。 (本题用 gcc -std=c11 -O0 编译。)
链接时找不到函数
场景:一个两文件的统计程序,编译都过了,最后一步却报 undefined reference,可执行文件一直出不来。 任务:让 cd ~/work/link && gcc -std=c11 -o app main.c sta
全局变量重复定义
场景:一个计数模块把全局变量直接写在了头文件里。两个 .c 都包含了它,链接器报 multiple definition。 任务:修好 ~/work/glob 的源码,让全局变量只定义一次、两个文件共用同一个,编译出 ~/work/glob
命令行开头那一格
Makefile 里,规则下面的命令行必须以【0】开头,否则会报 missing separator。
漏写了头文件依赖
目标 main.o 的依赖里漏写了 geom.h,改了 geom.h 之后运行 make,它会【0】。
要不要重编
make 的核心判断:目标的时间戳比任何一个依赖旧,就要重编(相等不算)。补全 need,输出三个判断结果。 (本题用 gcc -std=c11 -O0 编译。)
为三个文件写 Makefile
场景:一个三文件的小程序,每次都手敲一长串 gcc 命令,改了头文件还常常忘了重编某个文件。该让 make 来管了。 任务:在 ~/work/mk 写一个 Makefile:make 把三个 .c 编成 .o 再链接成 shapes,mak
改了头文件却不重编
场景:一个项目的 Makefile 先是直接报错跑不起来;勉强能跑之后,改了 config.h 里的参数,make 却说 up to date,程序行为纹丝不动。 任务:只改 ~/work/mk2/Makefile(不改 .c / .h),
少留的那一个字节
先 malloc(strlen(s)) 再 strcpy,问题出在【0】。
ASan 发现越界时
用 -fsanitize=address 编出来的程序,运行中发现越界访问时会【0】。