переопределение структуры в linux GCC - PullRequest
0 голосов
/ 09 марта 2011

Я новичок в программировании. Я пытаюсь скомпилировать AC-программу в Linux, gcc, написанный другими, и получил следующую ошибку.

cmd.h: 145: ошибка: переопределение 'struct stat',

Кажется, кто-то определил структуру stat более одного раза.Но так как есть много файлов кода, я не знаю, как решить это. Кто-нибудь может посоветовать мне это.Спасибо

Ответы [ 4 ]

2 голосов
/ 09 марта 2011

Полагаю, вы пытаетесь определить собственный тип структуры, который уже определен в стандартных заголовках. struct stat определено в sys / stat.h см. Здесь (содержит информацию о статистике файла) и включено напрямую или через другие заголовки

Лучший подход - использовать префикс для определения типа, например, typedef struct myprog_cmd_stat {...}; .Последнее также позволит быстро понять, где оно определено.

1 голос
/ 09 марта 2011

Я бы предложил создать make-файл и использовать make для компиляции вашего кода. Пример .

0 голосов
/ 09 марта 2011

Скомпилируйте с помощью cc -E, которая выдаст вывод препроцессора. Сканируйте это на наличие структурной статистики; # filename lineno строки, испускаемые препроцессором, сообщат вам, где происходит определение.

=== edit ===

Еще лучше: Компиляция

#include <sys/stat.h>

struct stat {};

производит сообщения

foo.c:3:8: error: redefinition of ‘struct stat’
/usr/include/bits/stat.h:43:8: note: originally defined here

Который точно говорит, где происходит столкновение. Держу пари, что вы получаете похожие сообщения и просто пропустили это.

0 голосов
/ 09 марта 2011

Попробуйте использовать grep -r "struct stat" *, чтобы найти определение?Попробуйте сначала свой собственный код, а затем проверьте определения в /usr/include и /usr/local/include.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...