cai-4 2021-07-03 18:28 采纳率: 50%
浏览 38

关于C语言全局变量问题?

C语言萌新,全局变量中通过a.c定义一个变量int a=4,在b.h文件中extern int a;全局变量,最后在main.c中输出a=4,软件为devc++ 5.11.但是编译时报错了

img

img

img

img

而且目标文件中没有a.o,b.o文件生成,只有main.o文件,Makefile中也没有关于a.o,b.o的相关配置。

Makefile代码

# Makefile created by Dev-C++ 5.11
 
CPP      = g++.exe
CC       = gcc.exe
WINDRES  = windres.exe
OBJ      = main.o
LINKOBJ  = main.o
LIBS     = -L"D:/Dev-Cpp/MinGW64/lib" -L"D:/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib"
INCS     = -I"D:/Dev-Cpp/MinGW64/include" -I"D:/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"D:/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include"
CXXINCS  = -I"D:/Dev-Cpp/MinGW64/include" -I"D:/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"D:/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"D:/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++"
BIN      = 项目2.exe
CXXFLAGS = $(CXXINCS) -lwsock32
CFLAGS   = $(INCS) -lwsock32
RM       = rm.exe -f
 
.PHONY: all all-before all-after clean clean-custom
 
all: all-before $(BIN) all-after
 
clean: clean-custom
    ${RM} $(OBJ) $(BIN)
 
$(BIN): $(OBJ)
    $(CC) $(LINKOBJ) -o $(BIN) $(LIBS)
 
main.o: main.c
    $(CC) -c main.c -o main.o $(CFLAGS)

而同代码可执行代码为

# Makefile created by Dev-C++ 5.11
 
CPP      = g++.exe
CC       = gcc.exe
WINDRES  = windres.exe
OBJ      = main.o a.o b.o
LINKOBJ  = main.o a.o b.o
LIBS     = -L"D:/Dev-Cpp/MinGW64/lib" -L"D:/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib"
INCS     = -I"D:/Dev-Cpp/MinGW64/include" -I"D:/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"D:/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include"
CXXINCS  = -I"D:/Dev-Cpp/MinGW64/include" -I"D:/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"D:/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"D:/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++"
BIN      = 项目4.exe
CXXFLAGS = $(CXXINCS) -lwsock32
CFLAGS   = $(INCS) -lwsock32
RM       = rm.exe -f
 
.PHONY: all all-before all-after clean clean-custom
 
all: all-before $(BIN) all-after
 
clean: clean-custom
    ${RM} $(OBJ) $(BIN)
 
$(BIN): $(OBJ)
    $(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
 
main.o: main.cpp
    $(CPP) -c main.cpp -o main.o $(CXXFLAGS)
 
a.o: a.c
    $(CPP) -c a.c -o a.o $(CXXFLAGS)
 
b.o: b.c
    $(CPP) -c b.c -o b.o $(CXXFLAGS)

main.c文件中大部分代码为自动生成。printf,incude""是自己写的。跪求解决方法

  • 写回答

1条回答 默认 最新

  • 暗夜无风 2021-07-03 20:09
    关注

    img
    项目里并没有b.c这个文件,只有b.h,Makefile代码写错了。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器