未定义对“ [功能]”的引用

时间:2019-04-15 11:03:41

标签: c modular

编辑#1:请使用此代码示例找到解决方案,作为此初始帖子的答案。请尝试在What is an undefined reference/unresolved external symbol error and how do I fix it?中找到可能的解决方案,它对我没有帮助,但也许适合您。

我尝试构建一个由每两个头文件和应用程序文件组成的项目。如果我编译每个文件,则不会发生任何错误。如果我构建项目,则会遇到以下错误。

(\d+)  (\d+)

该项目包含以下文件:

  1. B13-03_MAIN.h
  2. B13-03_MAIN.c
  3. B13-03_H1.h
  4. B13-03_F1.c

未定义的函数在B13-03_MAIN。 h 中声明,并在B13-03_MAIN。 c 中定义。两个应用程序文件都使用B13-03_MAIN。 h 作为原型。

非常感谢您的帮助。

IDE Version

Tools

Plugins

1 个答案:

答案 0 :(得分:0)

该问题涉及未定义函数的错误嵌套。我专注于B13-03_MAIN。 h 和B13-03_MAIN。 c

/* B13-03_MAIN.h */
create_article();
show_article();
edit_article();
delete_article();

包含问题的实施

/* B13-03_MAIN.c */
#include <stdio.h>
#include "B13-03_MAIN.h"
#include "B13-03_H1.h"

void main(void) { 
  switch(option) {
    case abc_c: create_article(); break;
    case abc_s: show_article(); break;
    case abc_e: edit_article(); break;
    case abc_d: delete_article(); break;
    default:    printf("Undefined option.");
  }

  void create_article(void) {
  ...
  }

  void show_article(void) {
  ...
  }

  void edit_article(void) {
  ...
  }

  void delete_article(void) {
  ...
  }
} /* This curly braces is incorrectly nested */

无问题的实现:

void main(void) { 
  switch(option) {
    case abc_c: create_article(); break;
    case abc_s: show_article(); break;
    case abc_e: edit_article(); break;
    case abc_d: delete_article(); break;
    default:    printf("Undefined option.");
  }
} /*Incorrectly nested curly brace should be implemented here */

void create_article(void) {
...
}

void show_article(void) {
...
}

void edit_article(void) {
...
}

void delete_article(void) {
...
}