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

Makefile报lib/ADC.c:2缺失分隔符错误(非制表符问题)

Make解析C源文件时出现"missing separator"错误

执行make时触发以下错误:

lib/ADC.c:2: *** missing separator.  Stop.

关键信息

  • 排除制表符问题:所有Makefile命令均使用真实制表符
  • lib/ADC.c是标准C代码,无语法异常
  • 错误指向文件第2行,但该行是合法的#include "ADC.h"
  • main.c中可正常使用的sam.h(通过ADC.h间接引用),在lib目录下的源文件中无法被正确找到
  • 仅保留#include "sam.h"一行时,lib/ADC.c无法定位到same51/include目录下的sam.h

相关Makefile片段

INCLUDES := -I"same51" \
        -I"same51/CMSIS/Include" \
        -I"same51/include" \
        -I"same51/startup" \
        -I"lib" \
        -I"same51/addons"

# Sources
SRCS := $(wildcard $(SRC_DIR)/*.c) $(wildcard lib/*.c)

$(BUILD_DIR)/%.o: lib/%.c
    @echo Compiling lib: $<
    $(CC) $(CFLAGS) -D$(MCU_DEFINE) $(INCLUDES) -MD -MP -MF "$(@:.o=.d)" -MT"$@" -o "$@" "$<"

已排查内容

  • 所有文件行尾均为LF,无CRLF格式问题
  • Makefile中无多余冒号或格式错误的规则
  • Makefile内不存在指向lib/ADC.c:2的额外规则

sam.h内容

#ifndef _SAM_
#define _SAM_

#if   defined(__SAME51G19A__) || defined(__ATSAME51G19A__)
  #include "same51g19a.h"
#elif defined(__SAME51G18A__) || defined(__ATSAME51G18A__)
  #include "same51g18a.h"
#elif defined(__SAME51N20A__) || defined(__ATSAME51N20A__)
  #include "same51n20a.h"
#elif defined(__SAME51N19A__) || defined(__ATSAME51N19A__)
  #include "same51n19a.h"
#elif defined(__SAME51J19A__) || defined(__ATSAME51J19A__)
  #include "same51j19a.h"
#elif defined(__SAME51J18A__) || defined(__ATSAME51J18A__)
  #include "same51j18a.h"
#elif defined(__SAME51J20A__) || defined(__ATSAME51J20A__)
  #include "same51j20a.h"
#else
  #error Library does not support the specified device
#endif

#endif /* _SAM_ */

疑问

是否有人遇到过make将C源文件行解析为规则的情况?还有哪些原因会导致make在合法.c文件上报缺失分隔符错误?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 00:58:22