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

在Visual Studio Code中运行C代码出现undefined reference错误如何解决

问题原因

这是典型的C语言链接阶段符号找不到错误,核心问题出在两个地方:

1. 代码引入方式不符合C项目规范

不要在.c文件中#include另一个.c文件,这是错误的写法,正确的多文件项目组织逻辑是:

  • 新建deq.h头文件,写入所有deq.c对外暴露的函数声明,deq_new()的声明要写在这里,示例:
// deq.h内容示例,根据你deq_new的实际返回值、参数调整
#ifndef DEQ_H
#define DEQ_H
void* deq_new(void);
// 其他deq相关函数的声明都放在这里
#endif
  • 把main.c顶部的#include "deq.c"替换为#include "deq.h"

2. Makefile编译规则没有包含deq.c的编译链接

对照以下正确的编译逻辑检查你拿到的Makefile:

  • 要分别编译main.c和deq.c生成对应的.o目标文件
  • 最终生成可执行文件的链接步骤,要把main.o和deq.o同时传入链接器
    示例正确的Makefile写法:
CC = gcc
CFLAGS = -Wall -g

# 最终生成的可执行文件,依赖main.o和deq.o
main: main.o deq.o
	$(CC) $(CFLAGS) -o $@ $^

# 编译main.c的规则,依赖deq.h保证头文件修改后会重新编译main.c
main.o: main.c deq.h
	$(CC) $(CFLAGS) -c $<

# 编译deq.c的规则
deq.o: deq.c deq.h
	$(CC) $(CFLAGS) -c $<

# 清理规则
clean:
	rm -f *.o main

如果是手动在命令行编译运行,也要同时传入所有用到的.c文件,示例命令:
gcc main.c deq.c -o main && ./main

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:27:01