Использование одной и той же переменной в разных файлах (с использованием extern)

-5

Мне нужно изменить проект C, потому что теперь мне нужно использовать функцию C++.

Предположим, что у меня есть файл Ac:

переменный ток

uchar *const x;
uchar *const y;
/.../

и другие файлы, которые также используют эти переменные, позволяют называть их Bc и Cc:

До нашей эры

extern uchar *const x;
extern uchar *const y;
/.../
foo1(x);
bar1(y);

Cc

extern uchar *const x;
extern uchar *const y;
/.../
foo1(x);
bar1(y);

Когда я компилирую весь файл с компилятором C, все работает отлично. Теперь мне нужно использовать некоторую функцию C++, поэтому мне нужно перекомпилировать все с помощью компилятора C++. Здесь ошибки:

undefined reference to '::x(void)'
undefined reference to '::y(void)'

Следуя советам в ответе здесь и используя extern "C" вокруг переменной в Bc и Cc, генерирует другие ошибки

Некоторая идея о том, как решить эту проблему?

спросил(а) 2021-01-19T16:57:52+03:00 6 месяцев, 2 недели назад
1
Решение
119

Ключевое слово extern должно быть помещено в файл заголовка, и определение переменной должно быть только в одном исходном файле, поэтому вы хотите следующее:

В А:

extern uchar *const x;
extern uchar *const y;

В Ac

uchar *const x;
uchar *const y;

В Bc

#include "A.h" 

void someFunction() {
foo(x);
bar(y);
}

В Cc

#include "A.h"

void someOtherFunction() {
foo(x);
bar(y);
}

ответил(а) 2021-01-19T16:57:52+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема