|
А мне по барабану какая будет ОС, у меня всё написано в стандартах POSIX (Portable Operating System Interface for Unix) - поэтому ПО собирается под чем угодно.
Например, кусок из старой программы.
/*----------------------------------------------------------------------------
Файл определения дополнительных типов переменных.
20.11.96 14:42 - 17.05.01 8:12
02.06.2005 15:44
----------------------------------------------------------------------------*/
#ifndef ___TYPEDEF_HPP___
#define ___TYPEDEF_HPP___
/*----------------------------------------------------------------------------
Определение типа Операционной Системы.
----------------------------------------------------------------------------*/
#ifdef __NTO__ // Если это Neutrino.
#define __UNIX__ // Определим Unix.
#ifdef __QNX__
#undef __QNX__ // Это не QNX.
#endif
#endif // NTO
#ifdef __MSDOS__ // Если это DOS.
#define __DOS__ // Определим DOS.
#define __DOSQNX__ // Определим DOS+QNX.
typedef long pid_t;
typedef long timer_t;
typedef long nid_t;
typedef int bool;
const bool true = 1;
const bool false = 0;
#endif // __MSDOS__
#ifdef __QNX__ // Если это QNX.
#define __UNIX__ // Определим Unix.
#ifndef __DOSQNX__ // Определим DOS+QNX.
#define __DOSQNX__
#endif
#ifndef __TYPES_H_INCLUDED
#include <sys/types.h>
#endif
#endif
#ifdef __GNUC__ // Если это Linux.
#ifndef __UNIX__
#define __UNIX__ // Определим Unix.
#endif
#endif
// Если ОС QNX всегда предполагаем наличие обмена по сети в протоколе TCP.
#ifdef __UNIX__ // Если это Unix.
#define __TCPNET__ // Определим TCP.
#endif
/*----------------------------------------------------------------------------
Для возможности создания проекта с DLL.
14.01.04 13:18
----------------------------------------------------------------------------*/
#define ___DLL_MODE___
#include "./hpp/bases/dsystem.hpp"
/*----------------------------------------------------------------------------
Определение дополнительных типов.
----------------------------------------------------------------------------*/
#if defined( __DPMI32__ )
#define far
#define huge
#define interrupt
#endif
#if defined(__WIN32__) || defined(__GNUC__)
#define huge
#define far
#endif
// Обозначим пространство Имен для Builder!
#ifdef __BORLANDC__
#if __BORLANDC__ > 0x500 // Это Builder
namespace System {
#endif
#endif
typedef unsigned char Byte;
typedef unsigned short Word;
typedef long Long;
typedef unsigned long DWord;
typedef void ( *VoidFuncPtr ) ( void* );
typedef int ( *IntFuncPtr ) ( void* );
typedef int ( *IntFPtrInt ) ( int );
typedef void ( *VoidFuncInt ) ( int );
typedef int ( *IntFPtrPByte ) ( Byte* );
#ifdef __BORLANDC__
#if __BORLANDC__ > 0x500
};
using namespace System;
#endif
#endif
/*----------------------------------------------------------------------------
Макро для переопределения передачи в порт.
----------------------------------------------------------------------------*/
#ifdef __GNUC__
#undef __DOS__
#undef __QNX__
#ifndef __NTO__
#define inp inb
#define outp(Adr,Data) outb((Data),(Adr))
#else
#include <x86/inout.h>
#define inp in8
#define outp(Adr,Data) out8(Adr,Data)
#endif // NTO
#endif // __GNUC__
#ifdef __WIN32__
#define CLD __emit__ (0xFC)
#define IN_AL_DX __emit__ (0xEC)
#define IN_AX_DX __emit__ (0x66,0xED)
#define IN_EAX_DX __emit__ (0xED)
#define OUT_DX_AL __emit__ (0xEE)
#define REP_INSD __emit__ (0xF3,0x6D)
#define INSB __emit__ (0x6C)
#define INSW __emit__ (0x66,0x6D)
#define INSD __emit__ (0x6D)
inline int inp (int port) { _DX = (Word)port; IN_AL_DX; return _AL; }
inline int inw (int port) { _DX = (Word)port; IN_AX_DX; return _AX; }
inline int ind (int port) { _DX = (Word)port; IN_EAX_DX; return _EAX; }
inline void outp (int port, int value)
{ _DX = (Word)port; _AL = (Byte)value; OUT_DX_AL; }
#endif
__________________
Не важна реальность, важно как мы к ней относимся!
Последний раз редактировалось Просто инженер АиТ; 31.07.2014 в 09:27.
|