Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Написание кода для 32- и 64-битных платформ


Автор: icecrashldr 13.9.2010, 11:41
Цитата

Если писать без ошибок строго следуя стандарту, то проблем с "реализацией" никаких не будет. И не надо ничего лишнего подключать - максимум ifdef/else/endif.

Ваш опыт с 32 и 64 мне понятен. точнее он просто отсутствует.
И имелась ввиду идей, а пример для конкретизации .



rudvil, 
Не "микшируйте" концепции двух разных языком программирования. 

Автор: bsa 13.9.2010, 14:07
Цитата(icecrashldr @  13.9.2010,  12:41 Найти цитируемый пост)
Ваш опыт с 32 и 64 мне понятен. точнее он просто отсутствует.

У меня куча проектов, которые компилируются и работают под Linux x86, Linux x86_64 и Win32. Отличия только в нескольких файлах (да и то, деление на Linux и Windows). И все работает! Я что-то не так делаю?
Кстати, я НИКОГДА не присваиваю указатели переменным типа (unsigned) (long) int.

Цитата(Muerto @  13.9.2010,  13:01 Найти цитируемый пост)
но собственно в чем вообще преимущество интерфейсов?

А ты попробуй создать проект, состоящий из двух или более cpp файлов, в которых используется класс MyClass, интерфейс и реализация которого находятся в одном из этих cpp. Когда сделаешь, расскажешь, что у тебя получилось.

Автор: kemiisto 13.9.2010, 15:38
Цитата(baldina @  13.9.2010,  16:11 Найти цитируемый пост)
напрямую связано с понятием "раздельная компиляция"

Ай-ай-ай. Как плохо мы разбираемся в вопросе. В С/С++/FORTRAN нет раздельной компиляции (separate compilation), только независимая (independent compilation). smile 

http://pplchapter8.tripod.com/compile.htm.

Цитата
An important characteristic of independent compilation is that the interfaces between the separately compiled units are not checked for consistency.

Что доставляет. Хлопот. smile 

Автор: icecrashldr 13.9.2010, 19:11
bsa, 
Ну например, из недавнего писал трасировщик под винь.

WaitForDebugEvent
ReadProcessMemory
WriteProcessMemory
GetThreadContext/SetThreadContext

"Трасирощик" организует цикл отладчика, и логирует происхождения exceptions, c дампом опкодов инструкций(надо еще дизассм прикрутить).
+ Некоторое апи.

Вот тут и посмотрим как будет просто сделать для 32 + 64 битов.

Автор: bsa 13.9.2010, 20:47
Цитата(icecrashldr @  13.9.2010,  20:11 Найти цитируемый пост)
Вот тут и посмотрим как будет просто сделать для 32 + 64 битов. 

Начнем с того, что я стараюсь избегать данной ОС. Именно потому, что в самом начале ее разработки была допущена куча ошибок в архитектуре, из-за которых все нынешние беды и лезут.
Если бы мне пришлось с этим связываться, я бы сделал универсальный интерфейс (абстрактный класс) и пару его реализаций (наследников), что собственно у меня в моих проектах и имеется:
interface.h
win_impl.h / win_impl.cpp
x11_impl.h / x11_impl.cpp

В конфигурацию сборки под Windows включен win_impl.cpp, в конфигурацию под Linux включен x11_impl.cpp. В win_impl.h и x11_impl.h есть #ifdef/#endif, которые защищают от сборки на "неправильной" платформе. Так же в каждом из них есть определение типа 
Код
typedef X11Impl Driver;
Дальше по коду я просто использую класс Driver не заморачиваясь на то, чем он на самом деле является (более того, это используется только в одном модуле, остальные знают только о Interface - предке Driver).

Автор: baldina 14.9.2010, 08:38
kemiisto, что за троллизм? присылаете  ссылку с какого-то забора...
я использую терминологию, соответствующую русскоязычной тех. лит., в т.ч. переводной. например http://www.cyberguru.ru/programming/cpp/cpp-data-abstraction-page21.html

Автор: kemiisto 14.9.2010, 09:32
"Им будет не просто, тем, кто полагается на истину авторитета, вместо того, чтобы полагаться на авторитет истины." (Джеральд Месси)

Цитата(baldina @  14.9.2010,  09:38 Найти цитируемый пост)
присылаете  ссылку с какого-то забора...

Во-первых, это одна из первых ссылок, что удалось найти в Интернетах. Кратко и понятно.
Во-вторых, имеющий глаза, да увидит. А имеющий голову... Ну Вы поняли.

Вам никогда не доводилось слушать курс "Философия" в ВУЗе? Есть там замечательный раздельчик "Истина и её критерии". Или в рамках курса "Философия естественно-научного знания" есть несколько более подходящая родственная тема "Критерии научности". Так вот, уважаемый, почитайте как-нибудь на досуге. Ссылка на авторитеты - лишь один из критериев научности. И не самый значимый. Цитата в начале сообщения как бы говорит нам, почему...

Цитата(baldina @  14.9.2010,  09:38 Найти цитируемый пост)
я использую терминологию, соответствующую русскоязычной тех. лит., в т.ч. переводной. например тут 

Давайте разберёмся по порядку.
Во-первых, это и есть какой-то забор. Что это? Где ссылка на первоисточник? Где указан переводчик?
Во-вторых, господин Страуструп - авторитет в мире C++. Как специалиста по CS в общем его авторитет, как минимум, сомнителен. Могло быть и так: к моменту создания C++ собственно раздельной компиляции не существовало. И автор языка использовал этот термин. По-моему, Керниган называл компиляцию в С именно separate. Сейчас, однако, устоялась терминология, приведённая по ссылке в моём предыдущем сообщении.
В-третьих, также сомнительна репутация неизвестного переводчика. Вы "не первый год замужем" и о качестве переводов технической литературы на великий и могучий должны быть в курсе.
В-четвёртых, откуда переодчик мог знать об этом различии, если даже Страуструп не в курсе.
В-пятых, то, что правильные вещи в основном приходится цитировать "с заборов" - проблема CS в целом. Слишком много "неучей" и слишком много, верящих в "истины" "авторитетов"...

Автор: baldina 14.9.2010, 09:46
ваша терминология настолько устоялась, что википедия и прочие известные (англоязычные) источники о ней не в курсе. а термин "independent" почти не встречается, да и там где есть, очень часто как синоним "separate".
для философов напомню, что суть терминологии не в ней самой, а что бы ее одинаково понимали обе стороны. вобщем все это пустой флейм, я боле не участвую.
и хамить мне не надо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)