Возврат структуры несовместимых типов C

Следующий код дает мне ошибку компиляции «несовместимые типы при назначении»

Файл 1:

struct a{
  int b;
}

Файл 2:

static struct a c;

void test(){
   c.b = 0;
}

struct a getStruct(){
   test();
   return c;
}

Файл 3:

static struct a d;

void setStruct(){
   d = getStruct(); (<-- Error)
}

Я искал это и не нашел своей ошибки.

Компилятор обычно предоставляет информацию о том, где возникает ошибка. Не могли бы вы предоставить полный отчет об ошибке?

Karol T. 28.05.2018 09:36

Я полагаю, файлы 2 и 3 также включают файл 1? Показывать полные файлы.

Arndt Jonasson 28.05.2018 09:38

Я предполагаю, что при компиляции файла 3 компилятор не показывает тип getStruct, поэтому он предполагает int.

Arndt Jonasson 28.05.2018 09:41

да 2 и 3 включают файл 1

serc 28.05.2018 09:41

я меняю структуру d в файле 3 на int, и теперь она работает, так что то, что вы говорите, правильно или? Но как я могу это исправить?

serc 28.05.2018 09:43

Вероятно, файл 3 не видит ни определения структуры, ни getStruct. Довольно дисфункциональная конструкция программы - иметь getStruct в одном файле и setStruct в другом.

Lundin 28.05.2018 10:06

да, я знаю, но я не могу это изменить.

serc 28.05.2018 10:10

Хорошо, это работает, я интегрирую только прототип из этой функции. Ребята !!

serc 28.05.2018 10:13

Пожалуйста, всегда повышайте уровень предупреждения. Компилятор должен пожаловаться на использование функции без предварительного объявления. Это должно прямо указывать на отсутствие прототипа.

Gerhardh 28.05.2018 10:17

Корень проблемы может быть в том, что вы компилируете как C90. Вам следует использовать лучший компилятор или правильно настроить тот, который вы используете. Для более старых версий gcc (старше 5.0.0) вы должны компилировать с -std=c99, иначе он перейдет в режим динозавра.

Lundin 28.05.2018 10:51
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
10
62
0

Другие вопросы по теме