неопределенная ошибка ссылки в VScode - PullRequest
0 голосов
/ 30 июня 2018

Я тестирую, как использовать extern в C, поэтому я создаю три файла для main.c, test.c, headfile.h. Я хочу объявить переменную и функцию в headfile.h, определить в test.c, затем распечатать переменную и вызвать функцию из main.c Он успешно работает с использованием Dev c ++, однако, когда я помещаю те же самые файлы в VScode, он показывает ошибки, что есть неопределенная ссылка на переменные

сообщения об ошибках введите описание изображения здесь

main.c

#include <stdio.h>
#include <stdlib.h>
#include"D:\My Documents\Desktop\CODE\c\VScode\externTest\headfile.h"
int gVar = 1;

int main(void)
{
    extern float a;

    printf("a = %f\n",a);
    printf("gVar = %d\n",gVar);
    printf("aa = %d\n",aa);
    printf("bb = %f\n",bb);
    function ();
    system("pause");
    return 0;
}

test.c

#include <stdio.h>
#include "D:\My Documents\Desktop\CODE\c\VScode\externTest\headfile.h" 
float a = 100;
int aa = 200;
float bb = 300;

void function (void){
    printf("yeh you got it!!\n");
    extern int gVar;
    gVar++;
    printf("gVar in test.c function = %d",gVar);
}

headfile.h

extern int aa;
extern float bb;
void function(void);

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Большое спасибо ~

Он работает путем ввода команды, которую вы написали.

Однако все равно отображаются те же ошибки, когда я просто нажимаю кнопку отладки.

скриншот сообщения об ошибке

0 голосов
/ 30 июня 2018

Похоже, ваш main.c файл не связан с test.c. Мне удалось воспроизвести точно такое же сообщение об ошибке, используя следующие команды компиляции:

$ gcc main.c
/tmp/ccVqEXL5.o: In function `main':
main.c:(.text+0x8): undefined reference to `a'
main.c:(.text+0x38): undefined reference to `aa'
main.c:(.text+0x51): undefined reference to `bb'
main.c:(.text+0x69): undefined reference to `function'
collect2: error: ld returned 1 exit status

Чтобы это исправить, просто добавьте файл test.c в компиляцию, выполнив команду gcc main.c test.c.

...