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回答

bennyhuo

2021-03-18

这不是说 ui_context重复定义了吗,对照课程源码看一下你写的问题在哪儿吧

1
9
bennyhuo
回复
无价脂宝
好的~
2021-03-23
共9条回复

bennyhuo

2021-03-18

注意下 static 是文件内部可见

0
0

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2208 学习 · 853 问题

查看课程