Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 1022
от 13.03.2008, 01:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 483, Экспертов: 57
В номере:Вопросов: 3, Ответов: 4

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 126300: Здравствуйте уважаемые эксперты. Почему-то не работает перегрузка оператора >> работаю с builder 6.0 ...
Вопрос № 126346: define для определения версии C++ Builder Как в коде можно узнать версию текущего Builderа? Т.е. мне нужно сделать, чтобы определенный код работал только для определенной версии, типа этой тестовой функции: AnsiString testDef()<...
Вопрос № 126401: Здравствуйте эксперты. Не могу разобратся как передать в ассемблерную вставку значения размером в байт. При передаче по значению ошибки не возникает, но при передаче по ссылке компиллятор почему-то выдает ошибку несовпадения размеров операнд...

Вопрос № 126.300
Здравствуйте уважаемые эксперты.
Почему-то не работает перегрузка оператора >>
работаю с builder 6.0

Приложение:

Отправлен: 07.03.2008, 03:14
Вопрос задал: Глымов Антип (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, Глымов Антип!
Для перегрузки таких операторов их нужно объявлять дружественными вашему классу. Исправленную версию смотрите в приложении.

Приложение:

Ответ отправил: Терсков Сергей (статус: Практикант)
Ответ отправлен: 07.03.2008, 03:34
Оценка за ответ: 4
Комментарий оценки:
А почему их нужно объявлять дружественными, ведь закрытые члены я не использую


Вопрос № 126.346
define для определения версии C++ Builder

Как в коде можно узнать версию текущего Builderа?

Т.е. мне нужно сделать, чтобы определенный код работал только для определенной версии, типа этой тестовой функции:
AnsiString testDef()
{
#ifdef VER_BCB6
return "BCB6";
#endif

#ifdef VER_CG2007
return "CG2007";
#endif
return "none";
}

В Delphi нашел такое (из RxLib, файл rx.inc):
...
{$IFDEF VER145} { Borland C++Builder 6.x } // Polaris
{$IFDEF BCB}
{$DEFINE CBUILDER}
{$ObjExportAll On}
{$UNDEF DCS}
{$ENDIF}
{$ENDIF}
...
{$IFDEF VER185} { CodeGear Delphi 2007 (also defines VER180) }
{$DEFINE RX_D105}
{$ENDIF}
...

А в C++ Builder эти defin-ы не работают..

Подскажите, как это сделать в C++Builder ?
Отправлен: 07.03.2008, 14:16
Вопрос задал: Igor_ (статус: 4-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sergey A. Wedensky
Здравствуйте, Igor_!

В справочной системе BCB нашел список предопределенных макросов. Привожу в приложении. Кажется, __BORLANDC__ Вам должен подойти. Возвращает версию компилятора, например в Builder 5.51 возвращает 0x551.

Приложение:

Ответ отправил: Sergey A. Wedensky (статус: Студент)
Ответ отправлен: 07.03.2008, 14:33
Оценка за ответ: 5
Комментарий оценки:
Спасибо, похоже, что это поможет.
Не совсем понятно, каким образом там числа задаются, но опытным путем выяснил, что для C++Builder 6 и C++Builder 2007 отличаются.
Так что подойдет.
Спасибо


Вопрос № 126.401
Здравствуйте эксперты.
Не могу разобратся как передать в ассемблерную вставку значения размером в байт.
При передаче по значению ошибки не возникает, но при передаче по ссылке компиллятор почему-то выдает ошибку несовпадения размеров операндов... (operand size conflict)
Передавать и принимать нужно именно байты, в том то и смысл.

Как сделать чтобы данный код заработал?

Приложение:

Отправлен: 08.03.2008, 00:52
Вопрос задал: Вячеслав Шинкаренко (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: kool
Здравствуйте, Вячеслав Шинкаренко!
Аккуратней нужно буковки печатать.
Правильно в приложении.
Удачи!

Приложение:

---------
I am.

Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 08.03.2008, 11:30
Оценка за ответ: 3
Комментарий оценки:
да нет, это Вы не разобрались..

В первой строчке mov al,l я хочу занести в регистр al значение переменной l, которая передается функции rol.
А в последних двух строчках:
mov l,al
or h,ah
принять из неё уже измененные значения..

Так вот, если функцию определить так:
inline void rol(byte h, byte l, byte bit_ct)
то всё внутри функции работает, но естественно значения не возвращаются.
Чтобы возвращать значения логично было бы писать так: inline void rol(byte &h, byte &l, byte bit_ct).
Но почему-то это не работает.
Вот я и спрашиваю - почему?

Отвечает: Ross
Здравствуйте, Вячеслав Шинкаренко!

Не работает потому, что использование ссылок есть неявное использование указателей. Только в случае со ссылками, операции разыменования и взятия адреса компилятор оставляет за собой и код поэтому получается более удобочитаемым.
В ассемблерной вставке таких удобств уже нет, поэтому нужно либо явно использовать указатели, либо сохранять значения во временных переменных:

Приложение:

---------
Доступно только то, что видимо (c) Б. Керниган

Ответ отправил: Ross (статус: Студент)
Ответ отправлен: 10.03.2008, 12:39
Оценка за ответ: 5
Комментарий оценки:
Да я уже догадался по предыдущему ответу на минифорум.
Но всеравно спасибо.


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.72.3 от 12.03.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное