#c
#c
Вопрос:
У меня возникли трудности с этим одним назначением, и я продолжаю получать ошибку всякий раз, когда я создаю связанный список с другими структурами.
LinkedList.c
#include "sentence.c"
typedef struct{
sentence *first;
int numSentences;
}LinkedList;
Предложение.c
#include "word.c"
typedef struct{
word *sentence;
int lineNumber;
int numWords;
}sentence;
Word.c
typedef struct{
char *word;
int numCharacters;
int wordPos;
}word;
У меня возникают проблемы только при реализации части связанного списка, когда я компилирую со структурами предложений и слов, они работают нормально. Я нигде не инициализирую связанный список, и он по-прежнему выдает эту ошибку как для предложения, так и для слова:
Я не совсем уверен, что означает эта ошибка, поскольку я не верю, что я повторно объявляю ее где-либо еще.
Комментарии:
1. невозможно воспроизвести: repl.it/@WilliamLynch1/SlushyWatchfulInterchangeability .
2. Вы не должны #включать файлы «.c». #включение только для файлов «.h». Но это, скорее всего, не причина ошибки, хотя это упростит устранение неполадок. Скорее всего, вы включаете word.c в 2 других файла — прямо или косвенно.
3. Добавьте свой код в
.h
файлы (для соглашения) и поместите их в защиту заголовка , чтобы они не включались несколько раз.4. Ни один из типов, которые вы показываете, не является
struct sentence
(у вас нет тега ни в одной из структур, хотя одной из структур без тегов (анонимных) присваивается имя typedef ofsentence
. Ошибка, похоже, не соответствует показанному вами коду.5. OT: большинство отладчиков не могут отображать поля внутри структуры, если у структуры нет имени тега
Ответ №1:
Вы не должны #включать файлы «.c». #include используется только для файлов «.h».
Но это, скорее всего, не основная причина ошибки, хотя невыполнение этого упростит устранение неполадок.
Скорее всего, вы включаете word.c в 2 других файла — прямо или косвенно
Вы также должны ввести практику добавления защитных элементов включения для файлов заголовков, чтобы исправить несколько включений одного и того же заголовка.
Ответ №2:
- Никогда не включайте файлы #include .c, никогда. Никаких исключений.
- Поместите typedef, к которым должны быть доступны другие файлы, в файл .h, например word.h или sentence.h.
- Не самая блестящая идея присвоить члену структуры тот же идентификатор, что и типу структуры, в которой он находится.