Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как использовать структуру определенную ниже в коде / 6 сообщений из 6, страница 1 из 1
21.04.2013, 22:29
    #38234427
vl000vl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать структуру определенную ниже в коде
IExampleVtbl - структура, которая должна содержать ссылки на разные функции
/для простоты я привел только одну функцию/
При компиляции выводится сообщение error C2143: syntax error : missing ';'
Не подскажите как правильно оформить код /Visual Studio 2012/

typedef struct {
IExampleVtbl *lpVtbl; // <== error C2143: syntax error : missing ';'
DWORD count;
char Str01[ 80 ];
} IExample;

ULONG STDMETHODCALLTYPE AddRef(
IExample *this1
) {
++this1->count;
return( this1->count );
}

typedef ULONG STDMETHODCALLTYPE AddRefPtr( IExample * );

typedef struct {
AddRefPtr *AddRef;
} IExampleVtbl;
...
Рейтинг: 0 / 0
21.04.2013, 22:44
    #38234434
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать структуру определенную ниже в коде
Тип должен быть объявлен перед использованием. Компиляция идёт сверху вниз .
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.04.2013, 23:14
    #38234445
vl000vl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать структуру определенную ниже в коде
Если определить

typedef struct {
AddRefPtr *AddRef;
} IExampleVtbl;

выше строки
typedef struct {
IExampleVtbl *lpVtbl; // <== error C2143: syntax error : missing ';'
DWORD count;
char Str01[ 80 ];
} IExample;

тогда будет выдаваться ошибка на строке
AddRefPtr *AddRef;
...
Рейтинг: 0 / 0
21.04.2013, 23:23
    #38234450
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать структуру определенную ниже в коде
RTFM Forward Declarations.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.04.2013, 23:28
    #38234451
vl000vl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать структуру определенную ниже в коде
Проблему решил.
Код должен быть записан например так:

struct IExampleVtbl_;

typedef struct {
IExampleVtbl_ *lpVtbl;
DWORD count;
char Str01[ 80 ];
} IExample;

typedef HRESULT STDMETHODCALLTYPE QueryInterfacePtr( IExample *, REFIID, void **);
typedef ULONG STDMETHODCALLTYPE AddRefPtr( IExample * );

typedef struct IExampleVtbl_ {
QueryInterfacePtr *QueryInterface;
AddRefPtr *AddRef;
} IExampleVtbl;

// -------------------------------------------------------
//
ULONG STDMETHODCALLTYPE AddRef(
IExample *this1
) {
++this1->count;
return( this1->count );
}

// -------------------------------------------------------
//
HRESULT STDMETHODCALLTYPE QueryInterface(
IExample *this1,
REFIID vTableGuid,
void **ppv
) {

*ppv = this1;

this1->lpVtbl->AddRef( this1 );

return( NOERROR );

}

void ExCOM03(
void
) {

IExample IExample01;

}
...
Рейтинг: 0 / 0
21.04.2013, 23:42
    #38234460
vl000vl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать структуру определенную ниже в коде
Спасибо за напоминание об
RTFM Forward Declarations

Честно говоря я ее частенько использую. Но вот как это по научному называлось - забыл ...
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как использовать структуру определенную ниже в коде / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]