You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Peep编译器Makefile问题排查及test-i2p测试文件编写咨询

Peep编译器Makefile排查指南
  • 核对依赖关系:确认每个编译目标(如最终可执行文件peep)的依赖项完整,所有需要编译的.c文件都被纳入,头文件变更时能触发对应源文件的重编译。推荐用$(wildcard *.c)自动匹配目录下所有C文件,避免手动列写遗漏。
  • 检查编译/链接命令:编译阶段的命令(如gcc -c $< -o $@)需确保包含必要参数:-Wall开启警告便于排查潜在问题、-I.指定头文件搜索目录、-g生成调试信息方便后续调试。链接阶段要保证所有生成的.o目标文件都被加入,比如通过OBJS = $(patsubst %.c,%.o,$(wildcard *.c))定义目标文件列表,再用peep: $(OBJS)作为链接目标。
  • 执行基础编译测试:直接运行make命令,观察是否能正常完成编译。若出现报错,根据错误信息定位:头文件未找到则检查-I参数是否正确,函数未定义则确认对应.c文件是否被纳入依赖。
  • 验证清理目标:确保clean目标能正确清理生成的中间文件和可执行文件,比如编写为:
    clean:
        rm -f peep *.o
    
    避免使用rm -rf防止误删非编译生成的文件。
test-i2p测试文件编写指导
  • 明确测试核心:test-i2p用于验证编译器的整数到指针(i2p)转换功能,测试用例需围绕该转换场景设计。
  • 测试用例组织:
    • 测试文件可采用纯文本格式,每行对应一个独立测试用例,内容为Peep语言代码片段,例如:
      int x = 100; void* ptr = (void*)x;
      int y = 0; void* null_ptr = (void*)y;
      int z = -1; void* neg_ptr = (void*)z;
      
    • 若需要验证输出结果,可采用“输入代码|预期输出”的格式,方便后续自动化脚本比对。
  • 自动化测试实现:编写shell脚本批量执行测试用例,示例如下:
    #!/bin/bash
    TEST_FILE="test-i2p"
    if [ ! -f "$TEST_FILE" ]; then
        echo "测试文件不存在"
        exit 1
    fi
    
    while IFS= read -r line; do
        # 跳过空行和注释行
        [[ -z "$line" || "$line" =~ ^# ]] && continue
        
        echo "$line" > temp_input.peep
        ./peep temp_input.peep -o temp_output.o
        
        if [ $? -eq 0 ]; then
            echo "[PASS] $line"
        else
            echo "[FAIL] $line"
        fi
        
        rm -f temp_input.peep temp_output.o
    done < "$TEST_FILE"
    
  • 覆盖边界场景:除常规整数转换外,需加入边界测试用例,比如最大整数值转换、最小整数值转换、零值转换等,确保编译器在极端场景下的稳定性和正确性。

内容的提问来源于stack exchange,提问作者Hery Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 12:30:58