Intereting Posts
Изменение разделителя scanf () Лучший способ напечатать результат bool как «false» или «true» в c? Зачем нам нужно ключевое слово ‘extern’ в C, если объявления по умолчанию для файлов имеют внешнюю привязку? Почему malloc (0) возвращает действительный адрес памяти? Какая польза? Независимое от платформы хранилище целых чисел со знаком Какую справочную карту cscope вы используете? Как освободить память из массива char в C Как найти длину / количество элементов для массива? Можно ли найти память, выделенную указателем, без поиска оператора malloc Как изменить кнопку новой строки в пространстве, чтобы завершить чтение из streamа ввода? Создайте OpenVPN со специальной версией OpenSSL Простая программа для драйвера устройства Linux Инициализация массива C во время, отличное от объявления? Максимум три целых числа с использованием побитовых операций? Ошибка `Build Error` -1073741819 – C

переопределение; различные базовые типы (typedef struct)

У меня проблемы с попытками заставить структуры работать правильно, когда они определены в разных файлах. Насколько я могу судить, ошибка говорит мне, что структура определяется два раза. Я считаю, что, возможно, мне, возможно, понадобится использовать extern где-нибудь? Я пробовал экспериментировать и искать помощь в Google, но безрезультатно.

Любая помощь вообще была бы очень признательна, спасибо. Все четыре моих файла ниже.

FILE: Foo.h

typedef struct { int number; } my_struct; // Redefinition; different basic types 

ФАЙЛ: Foo.c

 #include "Foo.h" #include "Bar.h" #include  my_struct test; int main(void) { test.number = 0; DoSomething(&test); printf("Number is: ", &test.number); } 

ФАЙЛ: Bar.h

 #include "Foo.h" void DoSomething(my_struct *number); 

ФАЙЛ: Bar.c

 #include "Bar.h" void DoSomething(my_struct *number) { number->number = 10; } 

Проблема в том, что у вас есть Foo.h в Bar.h И оба Foo.h и Bar.h включены в main.cpp , что приводит к получению определения my_struct в блоке перевода. Имейте директиву ifdef вокруг файла определения структуры. Попробуй это –

 #ifndef FOO_H #define FOO_H typedef struct { int number; } my_struct; #endif