multiple definition of
来源:15-4 测试用例编写与单元测试

无价脂宝
2021-03-17
CMakeFiles\calculator.dir/objects.a(unit_test_ui.c.obj) unit_test_ui.c:11: multiple definition of `ui_context’; ![![
C:/msys64/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/10.2.0/…/…/…/…/x86_64-w64-mingw32/bin/ld.exe: CMakeFiles\calculator.dir/objects.a(unit_test_ui.c.obj):C:/Users/uf055871/Desktop/study/c/Chapter15/unit_test_ui.c:11: multiple definition of `ui_context’; CMakeFiles\calculator.dir/objects.a(console_ui.c.obj):C:/Users/uf055871/Desktop/study/c/Chapter15/console_ui.c:9: first defined here
collect2.exe: error: ld returned 1 exit status
mingw32-make[3]: *** [CMakeFiles\calculator.dir\build.make:170: calculator.exe] Error 1
mingw32-make[2]: *** [CMakeFiles\Makefile2:95: CMakeFiles/calculator.dir/all] Error 2
mingw32-make[1]: *** [CMakeFiles\Makefile2:102: CMakeFiles/calculator.dir/rule] Error 2
mingw32-make: *** [Makefile:137: calculator] Error 2
#include "console_ui.h"
#include <stdlib.h>
#include <stdio.h>
UiContext *ui_context;
static void DisplayTextWithFile(char *text) {
fputs(text, ui_context->text_displayer);
fputc('\n', ui_context->text_displayer);
fflush(ui_context->text_displayer);
}
static void ConsoleMain() {
int next_input = getchar();
while (next_input != EOF && next_input != 'q' && next_input != 'Q') {
HandleInput(ui_context->context, next_input);
next_input = getchar();
}
puts("Thank you");
}
static void InitConsole() {
ui_context = malloc(sizeof(UiContext));
ui_context->text_displayer = stdout;
ui_context->context = CreateCalcContext();
ui_context->context->display_text = DisplayTextWithFile;
}
static void DestroyConsole() {
DestroyCalcContext(&ui_context->context);
free(ui_context);
ui_context = NULL;
}
int RunConsoleUi(int argc, char *argv[]) {
InitConsole();
ConsoleMain();
DestroyConsole();
}
老师。。。。我。。。。
2回答
-
这不是说 ui_context重复定义了吗,对照课程源码看一下你写的问题在哪儿吧
192021-03-23 -
bennyhuo
2021-03-18
注意下 static 是文件内部可见
00
相似问题