Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Определение структуры для списка C  (Прочитано 9248 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
LemmonRus
Помогающий

ru
Offline Offline
В правильно заданном вопросе 90% ответа.


« : 20-12-2010 10:29 » 

Компилятор VS 6.0 кидает ошибку в структуре.
struct List
{
List * last;
Event * data;
List * next;
};
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #1 : 20-12-2010 10:37 » 

LemmonRus, скорее всего тип Event определен где-то ниже по коду.
А вообще, приведи текст ошибки?
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
LemmonRus
Помогающий

ru
Offline Offline
В правильно заданном вопросе 90% ответа.


« Ответ #2 : 20-12-2010 10:51 » 

Event описан выше по коду.

typedef struct
{
int ID;
HANDLE hEvent;
}Event;

Ошибка "syntax error : indentifier List" и указывает на строчку "List * last;"
Соответственно такая же ошибка на строке "List * next; "
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #3 : 20-12-2010 11:02 » 

LemmonRus, тогда не знаю - в MSVS 2003 компилирует нормально:
Код: (C++)
#include "stdafx.h"
#include "windows.h"

typedef struct
{
int ID;
HANDLE hEvent;
}Event;

struct List
{
    List * last;
    Event * data;
    List * next;
};
Сорри.
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
LemmonRus
Помогающий

ru
Offline Offline
В правильно заданном вопросе 90% ответа.


« Ответ #4 : 20-12-2010 11:10 » new

В том то вся и ботва, в компиляторах С++ такое дело проходит элементарно.
Но вот когда используется компилятор С возникает ошибка.
Компилятор С однопроходный в отличие от компилятора С++.
Тут насколько я понял стоит проблема в определении типа List,
 т.к. при компиляции структуры его не существует.
Конечно можно написать вместо "List*last; " "void* last;"а потом постоянно приводить тип.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 20-12-2010 11:11 » 

Я не знаю, есть ли в VC++ 6.0 опция компилятора ANSI C, но если есть и она включена, то ошибка становится понятной. Надо:
Код: (C)
struct List
{
  struct List *last;
  struct Event *data;
  struct List *next;
};
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
LemmonRus
Помогающий

ru
Offline Offline
В правильно заданном вопросе 90% ответа.


« Ответ #6 : 20-12-2010 11:17 » 

Бинго!
Она самая причем по умолчанию.
Спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines