Файл C не может видеть переменную, определенную в заголовочном файле # include'd - PullRequest
0 голосов
/ 29 августа 2018

В a.h У меня

#ifndef A_H
#define A_H 1

const int global_val = 10;

#endif

А в a.c у меня

#include "a.h"

int someFunc() {
    return global_val;
}

Но компилятор (gcc) выдает error: 'global_int' undeclared при компиляции a.c. Как это может быть необъявленным, когда я включил заголовочный файл?

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

У вас должно быть два файла.

хиджры

  #ifndef A_H
  #define A_H 1

  extern const int global_val;

  #endif

и

A.c

  #include "A.h"


  const int global_val = 10;
0 голосов
/ 29 августа 2018

Я нашел проблему. Я удалил все свои .o, .gch и исполняемые файлы, и код снова начал компилироваться. Я предполагаю, что предварительно скомпилированные заголовки (которые я даже не помню, как делал) обманули компилятор.

Вместо того, чтобы закрывать вопрос, я решил оставить этот ответ на тот случай, если это кому-нибудь поможет.

...