Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема з typedef struct в *.h

2.0K
13 июля 2006 года
rules
29 / / 19.03.2004
Есть странная проблема (VS 6.0 , Windows XP):
При использовании в *.h файле

typedef struct
{
int ee;
} test
при компиляции ошибка
field2n.h(33) : error C2371: 'test' : redefinition; different basic types

Сделал так ка пишет Microsoft
typedef struct mystruct
{
int ee;
} test;

но и это не помоголо, другая ошибка
field2n.h(31) : error C2011: 'mystruct' : 'struct' type redefinition

Если использовать первый или второй вариант прямо в *.cpp все работает.



Может кто стыкался с такой проблемой....
7.6K
13 июля 2006 года
Darien
125 / / 15.01.2006
Делать чтоли нечего ? :) ЗАчем писать на чистом С ЕСЛИ есть С++.


struct mystruct {
int test;
};

и усё
5.9K
13 июля 2006 года
Zushenskiy
161 / / 29.06.2006
Ну во первых нужно знать синтаксис
[COLOR=red]неправильно[/COLOR]
 
Код:
typedef struct
{
    int ee;
} test

правильно
 
Код:
typedef struct
{
    int ee;
} test;



а во втором случае(я не силен VS6) у тебя видать где то ошибка в другом месте но попробуй так
 
Код:
struct mystruct
{
    int ee;
};
typedef mystruct text;

3
13 июля 2006 года
Green
4.8K / / 20.01.2000
Да ошибка проста: ты дважды включаешь один и тот же заголовочный файл (явно или косвенно) в одну единицу компиляции.
Пользуй codeguard-ы.
В простейшем случае пиши в начале заголовочного файла
[COLOR=BLUE]
#pragma once
[/COLOR]
Если хочешь более стандартный код, то пиши в начале
[COLOR=BLUE]
#ifndef MY_HEADR_FILE_H // можешь написать любой уникальный макрос
#define MY_HEADR_FILE_H
[/COLOR]
а в конце файла
[COLOR=BLUE]
#endif // MY_HEADR_FILE_H
[/COLOR]
5.9K
13 июля 2006 года
Zushenskiy
161 / / 29.06.2006
Цитата:
Да ошибка проста: ты дважды включаешь один и тот же заголовочный файл (явно или косвенно) в одну единицу компиляции.
Пользуй codeguard-ы.
В простейшем случае пиши в начале заголовочного файла
[COLOR=blue]
#pragma once
[/COLOR]
Если хочешь более стандартный код, то пиши в начале
[COLOR=blue]
#ifndef MY_HEADR_FILE_H // можешь написать любой уникальный макрос
#define MY_HEADR_FILE_H
[/COLOR]
а в конце файла
[COLOR=blue]
#endif // MY_HEADR_FILE_H[/COLOR]


Факт если он действительно использует свой хедер в нескольких файлах проекта:)

5.9K
13 июля 2006 года
Zushenskiy
161 / / 29.06.2006
[SIZE=2][COLOR=#0000ff]
 
Код:
[SIZE=2][COLOR=#0000ff]
int[/COLOR][/SIZE][SIZE=2] [COLOR=black]text[/COLOR][COLOR=black];[/COLOR][COLOR=yellowgreen]//где то в другом файле на который ссылается этот хедер[/COLOR]
 
[/SIZE][SIZE=2][COLOR=#0000ff][COLOR=yellowgreen]//это в его хедере и он включает выше описанный файл[/COLOR]
struct[/COLOR][/SIZE][SIZE=2] [COLOR=black]mystruct[/COLOR]
{
[/SIZE][SIZE=2][COLOR=#0000ff]
int[/COLOR][/SIZE][SIZE=2] [COLOR=black]ee[/COLOR][COLOR=black];[/COLOR]
}[COLOR=black]text;[/COLOR]
[/SIZE]


[COLOR=black]будет такаяже ошибка "redifinition"(то есть компилятор говорит что переменная с таким именем уже эсть)[/COLOR][/COLOR][/SIZE][SIZE=2]
[/SIZE]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог