Что!то у меня Dev.Toolkit for OS/2 Warp к Ваткому WC10.0 прикрутить не получается. Говорит definition of macro '_Far16' not identical previos definition. Что делать?
Воткните где нибудь определение IBMCPP илиD_IBMCPP в командной строке или #define перед #include <os2.h>.
Для Ваткома 10.5a надо не просто d_IBMCPP, а
d_IBMCPP_=1.
Пишу: printf («*»);, а он сразу ничего не печатает. Что делать?
В стандарте ansi, чёткого определения как должны буферизовываться потоки stdin/stdout/stderr нет, нормальным является поведение со строчной буферизацией stdout/stdin.
Всякие другие дос компилеры обычно не буфеpизуют stdout совсем, что тоже нормально. Признаком конца строки в потоке является '\n', именно при получении этого символа происходит flush для line buffered потока.
Выходов два: отменить буферизацию или писать '\n' в нужных местах. Можно fflush(stdout) звать, тоже вариант.
Буферизация отменяется setbuf(stdout,NULL) или setvbuf(stdout,NULL,_IONBF,0).
Можно ли сделать встроенный в ехе!шник DOS4GW, как в D00M?
Легально — нет. Предыдущие версии позволяли просто скопировать:
copy /b dos4gw.exe + a.exe bound.exe
Но сейчас (начиная с версии 10.0а) это не работает и для этой цели нужно приобрести dos4gw/pro у фирмы Tenberry Software.
Нелегально — да. Существует утилита dos4g/link для автоматизированного выдирания и вклеивания экстендеров из/в EXE файлов. Помещалась в WATCOM.C в uuencode и доступна от автора.
Нужно взять не тот DOS4GW, что в комплекте (DOS4GW 1.97), а Pro версию (DOS4GW Professional). Выдрать можно из
DOOM, HERETIС, HEXEN, WARCRAFT2 и т.д., где он прибинден. Причем можно найти 2 разновидности Pro 1.97 — одна поддерживает виртуальную память, другая нет и еще что то по мелочи.