Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2010, 23:24   #1
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию С - приведение типов

Много кто знаком с функцией bsearch(), и знает что для работы с ней нужно написать функцию сравнения.. в качестве первого входного параметра а идет ключ, а в качестве 2ого b какой то элемент из таблицы...
помогите при приведении типов пожалуйста)
Код:
typedef struct OP {char MNEM[6]; unsigned char OPCODE; unsigned char LEN;} OP;

OP OPTAB[N]= {
	
	{"ADDA", 0xBB, 3},
	{"ADDA#", 0x8B, 2},
	{"ADDX", 0x31, 3},
	{"ADDX#", 0x30, 3},
       //и тд...
	

};


int comp(void* a, void* b)
{
	int r;
	r=strcmp((char*)a,(OP*)b->MNEM);
	if (r>0) return 1;
	else if (r<0) return -1;
	else return 0;
}
ошибка там где текст выделен красным
D:\visualstudio\MSDev98\MyProjects\ calc\calc.cpp(66) : error C2228: left of '.MNEM' must have class/struct/union type

Последний раз редактировалось Stilet; 20.11.2010 в 23:56.
onewho вне форума Ответить с цитированием
Старый 20.11.2010, 23:45   #2
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Попробуй
Код:
((OP*)b)->MNEM
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 20.11.2010, 23:53   #3
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Спасибо огромное! помогло! ) правда я уже решил проблему более изощренным способом... от так
int comp(void* a, void* b)
{
OP *temp = (OP*)b;
int r;
r=strcmp((char*)a,temp->MNEM);
if (r>0) return 1;
else if (r<0) return -1;
else return 0;
}

но теперь воспользуюсь вашей версией. +.
onewho вне форума Ответить с цитированием
Старый 21.11.2010, 00:12   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

В общем-то, обе версии суть одно и то же. Только первая - сделана в одну строку без привлечения дополнительной переменной, а вторая - с меньшей концентрацией скобок в единице объема.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамическое приведение типов в java sashonk Общие вопросы по Java, Java SE, Kotlin 13 28.08.2010 23:15
Приведение типов в Qt mike_tihomirov Qt и кроссплатформенное программирование С/С++ 1 19.06.2010 13:14
Приведение типов... В чем отличия? Gtx541 Общие вопросы C/C++ 1 16.06.2010 19:54
Приведение типов для SQL-запроса Rio309 БД в Delphi 1 06.06.2010 13:39
Приведение типов массива объектов Arnezami Общие вопросы .NET 3 17.12.2009 11:30