Цитата(Сергей Борщ @ Sep 5 2012, 09:38)

Да и еще не так давно почившие 16-битные x86 приложения, имевшие 16-битный int и
32-битный far pointer:
А также вполне свежие x86_64 приложения (указатель 64 бита, int 32 бита, а вот long зависит от OS, причём
временами это больно).
Цитата(TigerSHARC @ Sep 4 2012, 14:31)

есть стандартная функция ioctl (функция области ядра в Linux).
...
Но проблема в том, что прототип функции таков, что функция может принимать только unsigned int значение.
Точно?Цитата
#include <sys/ioctl.h>
int ioctl(int d, int request, ...);
Description
...
The third argument is an untyped pointer to memory.
И вот:
Цитата
real@ECSE2:/media/U2/real/o/avrprg/avreal/trunk/common$ grep -n ioctl lpt.cpp
lpt.cpp:339: claimed = ioctl(fd, PPCLAIM) == 0;
lpt.cpp:352: if (claimed && ioctl(fd, PPRELEASE)) {
lpt.cpp:368: ioctl(fd, PPRDATA, &value);
lpt.cpp:371: ioctl(fd, PPRSTATUS, &value);
lpt.cpp:374: ioctl(fd, PPRCONTROL, &value);
lpt.cpp:387: ioctl(fd, PPWDATA, &tmp);
lpt.cpp:392: ioctl(fd, PPWCONTROL, &tmp);
lpt.cpp:401: ioctl(fd, PPWDATA, pbuf++);
real@ECSE2:/media/U2/real/o/avrprg/avreal/trunk/common$
Никаких int-ов, где третьего аргумента нет вообще, где указатель в чистом виде.