2010-02-22 3 views
0

я получил ошибкуC ошибка ожидается спецификатор-спецификатор-лист перед «time_t»

from error.c:31: 
/usr/include/ap/mas.h:254: error: expected specifier-qualifier-list before ‘time_t’ 
make: *** [error.o] Error 1 

Обратная связь

Мы по крайней мере, должны видеть линию 31 из error.c и линии 254 ВМУ .h, предпочтительно с несколькими линиями контекста вокруг каждого. Эта ошибка может не иметь никакого отношения к тому, как объявляется time_t. - Джон Боде

Затем я проверяю в error.c (строка не 31) - #include "mas.h" тогда я чек линии нет 254 в mas.h.

in mas.h 

#include <sys/types.h> 
typedef struct _x{ 
    time_t time; 
}x; 

Может кто-нибудь предложить, где я иду не так?

+0

} x; не должно выглядеть так}; – jjj

+0

@Naveen - этот вопрос является отправкой 2295935 (который закрыт как «не настоящий вопрос») с дополнительной информацией (как указано в комментариях в 2295935). –

+0

@Michael: Обычно я предпочитаю видеть редактирование оригинала в этих случаях. @ambika: это поднимет вопрос до верха активного использования, и если вы проделали хорошую работу, его нужно снова открыть. – dmckee

ответ

6

У вас есть #include <time.h>?

+0

В time.h вы можете получить # include \t/* Это определяет __time_t для нас. */ – ambika

+0

@ambika: Если это определяет '__time_t', это не значит, что он определяет' time_t'. Ошибка звучит так: 'time_t' не определен. Почему вы хотите включить какой-то внутренний, специфичный для реализации заголовок? – sth

+0

Также: Вы уверены, что даже включаете 'bits/types.h'? Иначе это не поможет, если там определено 'time_t'. – sth

1

Необходимо указать time.hдо включая mas.h.

+1

Нет, если mas.h что-то требует от time.h, тогда mas.h должен включать в себя time.h сам. – 2010-02-24 00:02:59

+0

@Roger Я думаю, вы не знаете, как работает препроцессор C. Не имеет значения, включен ли 'time.h' из' mas.h' (где-то до первого использования типа 'time_t') или до' mas.h' - он будет давать тот же эффект.Однако есть школа, хотя (я не полностью поддерживаю), что заголовки не должны включаться из заголовков, но только из основного источника. – qrdl

+1

Хотя вы правы, qrdl, что не имеет значения, как time.h включен, если он включен, Роджер делает серьезную задачу. Вы должны иметь возможность включать заголовок и работать без каких-либо других зависимостей, поэтому должно быть возможно включить «mas.h» без включения чего-либо еще. И он должен скомпилироваться. См. Стандарты кодирования космического полета NASA Goddard (GSFC) для обсуждения - существует множество вопросов SO, которые охватывают землю (в том числе http://stackoverflow.com/questions/1804486/). –

Смежные вопросы