Я пытаюсь использовать глобальную переменную для хранения моего сообщения об ошибке в C.
Одна библиотека под названием Utils имеет:
#ifndef private_error_h
#define private_error_h
extern char error[1024];
__declspec(dllexport) void FillError(char* newError);
#define GetErr() error
#endif
Файл error.c:
#include "private_error.h"
char error[1024];
void FillError(char* newError) {
// ...
}
Затем я пытаюсь использовать его в программе:
#include "private_error.h"
int main() {
FillError("General error");
printf("%s\n", GetErr());
return 0;
}
Создает две переменные с разными адресами. Как я могу заставить программу использовать переменную из библиотеки Utils?
Мне удалось обойти эту проблему, изменив GetErr на функцию, возвращающую строку, но мне все еще интересно, где ошибка здесь.