Программирование >>  Перегруженные имена функций и идентификаторы 

1 ... 166 167 168 [ 169 ] 170 171 172 ... 210


Можно ли перенести под Ватком программы, написанные с применением OWL или TVision?

OWL - скорее всего нет, поскольку он построен на

расширениях синтаксиса, которые не обрабатывается

компилятором Ватком. Для переноса TVision есть несколько

вариантов.

Существуют diffi для преобразования TV под GNU C++ (продукт называется GVISION. Это не решает разом все проблемы, естественно, но по крайней мере этот вариант TV заточен под 32 бита и флат модель.

Совсем недавно стали доступны два порта TV под Watcom

C++.

Первый - это перенос под полуось и dos4gw TV 1.0.

Второй имеет внутри маленькую доку и собственно сырец+makefile. Доку рекомендуем внимательно прочесть - может пригодится при перекомпиляции ваших программ.

В моей программе используются inline ассемблер и псевдорегистры, смогу ли я заставить их работать под Ваткомом?

Нет. Придется переписать на встроенном ассемблере, либо

вынести в отдельный .asm модуль.

С 11 версии поддерживает стиль a la Borland:

asm ...

А нельзя ли кaк-нибyдь на вaткoмe реализовать AX из Borland? А то переношу под него библиотеку, a там они активно юзаются

Если вам AX нужен на read-only, то можно сделать

прозрачно:

=== Cut ===

short reg ax ( void ) ; #define AX reg ax() #pragma aux reg ax = \ value [ax]

#if defined( 386 ) defined( FLAT ) int reg eax ( void ) ;

#define EAX reg eax() #pragma aux reg eax = \ value [eax]

#define rAX reg eax() чтобы не задумываться о контексте

#else



#define rAX reg ax() #endif

=== Cut ===

А если для модификации, то лучше не полениться и сделать как просит Ватком (то бишь оформите этот фрагмент как inline-asm).

Встречается проблема, когда надо собирать смешанный проект - часть модулей компилится Ваткомом, а часть Борландом (например ассемблером). Линкер падает по трапу, вываливается с бредовыми ошибками и вообще ведет себя плохо. Что делать?

Ha худой конец есть способ:

борландовый

obj->wdisasm->.asm->wasm->

ваткомовский

А дальше это отдавать как обтчно wlinky.

Есть еще народное средство - нужно взять tasm 3.2, а еще лучше tasm 4.0, последний хорош тем, что имеет режимы совместимости по синтаксису со всеми своими предками...

Или TASM32 5.0 с патчем (обязательно 32 bits)

При задании надписей заголовков окон, меню, кнопок и т.п. на русском языке все прекрасно видно пока я нахожусь в режиме дизайнера. Стоит только запустить созданную аппликуху - кириллица исчезает напрочь.

Замените WRC.DLL из поставки Optima 1.0 на WRC.EXE из

поставки Watcom 11.0 и все придет в норму.

Какой компилятор C (C++) лучше всех? Что лучше: Watcom C++ или Borland C++? Посоветуйте самый крутой компилятор?!

Смотря для чего. Если нужна многоплатформенность и хорошая кодогенерация, то лучше - Ватком. Но следует учитывать, что производство Ваткома прекращено и компилятор уже не соответствует в полной мере стандарту C++, и уже никогда не будет соответствовать. А вот для разработки приложений под Win32 лучше будет Borland C++ Builder, хотя качество кодогенерации у него ниже и ни о какой многоплатформенности говорить не приходится. Что же касается BC++ 3.1 - это не более, чем учебный компилятор, и он уже давно забыт.



Не следует забывать и о gcc, который есть подо все мыслимые платформы и почти полностью поддерживает стандарт, однако он (точнее, его Win32 версия - cygwin) не слишком удобна для создания оконных Win32 приложений, с консольными - все в порядке, причем консольные приложения можно создавать и досовой версией - djgpp, дополненной пакетом rsxnt.

А вообще - рассуждать, какой компилятор лучше, достаточно бесполезное занятие. Идеального компилятора не существует в природе. Совершенно негодные компиляторы не имеют широкого распространения, а тот десяток компиляторов (не считая специфических кросс-компиляторов под разные встроенные системы), которые имеют широкое распространение, имеют свои достоинства и недостатки, так что приходится подбирать компилятор, наиболее подходящий для решения конкретной задачи.

Есть ли в Watcom встроенный ассемблер?

Встроенного asma у него на самом деле нет. Есть правда возможность писать asm-функции через #pragma aux ....

Например:

#pragma aux DWordsMover = \

mov esi, eax , \

mov edi, ebx , \

jcxz @@skipDwordsMover , \ rep movsd , \

@@skipDWordsMover: , \

parm [ebx] [eax] [ecx] modify [esi edi ecx]

void DWordsMover(void* dst, void* src, size t sz); В версии 11.0 точно имеется asm{}.

BC не хочет понимать метки в ассемблерной вставке - компилятор сказал, что не определена эта самая метка. Пришлось определить метку за пределами ASM-блока. Может быть есть более корректное решение?

Загляни в исходники RTL от BC++ 3.1 и увидишь там нечто

красивое, например:

#define I asm

........

I or si,si I jz m1



1 ... 166 167 168 [ 169 ] 170 171 172 ... 210

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика