⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 byteorder.h

📁 linux下的gcc编译器
💻 H
字号:
/*  DO NOT EDIT THIS FILE.    It has been auto-edited by fixincludes from:	"fixinc/tests/inc/sys/byteorder.h"    This had to be done to correct non-standard usages in the    original, manufacturer supplied header file.  */#ifndef _SYS_BYTEORDER_H#define _SYS_BYTEORDER_H/* Functions to convert `short' and `long' quantities from host byte order   to (internet) network byte order (i.e. big-endian).   Written by Ron Guilmette (rfg@ncd.com).   This isn't actually used by GCC.  It is installed by fixinc.svr4.   For big-endian machines these functions are essentially no-ops.   For little-endian machines, we define the functions using specialized   asm sequences in cases where doing so yields better code (e.g. i386).  */#if !defined (__GNUC__) && !defined (__GNUG__)#error You lose!  This file is only useful with GNU compilers.#endif#ifndef __BYTE_ORDER__/* Byte order defines.  These are as defined on UnixWare 1.1, but with   double underscores added at the front and back.  */#define __LITTLE_ENDIAN__   1234#define __BIG_ENDIAN__      4321#define __PDP_ENDIAN__      3412#endif#ifdef __STDC__static __inline__ unsigned long htonl (unsigned long);static __inline__ unsigned short htons (unsigned int);static __inline__ unsigned long ntohl (unsigned long);static __inline__ unsigned short ntohs (unsigned int);#endif /* defined (__STDC__) */#if defined (__i386__)#ifndef __BYTE_ORDER__#define __BYTE_ORDER__ __LITTLE_ENDIAN__#endif/* Convert a host long to a network long.  *//* We must use a new-style function definition, so that this will also   be valid for C++.  */static __inline__ unsigned longhtonl (unsigned long __arg){  register unsigned long __result;  __asm__ ("xchg%B0 %b0,%h0 ; ror%L0 $16,%0 ; xchg%B0 %b0,%h0"     : "=q" (__result) : "0" (__arg));  return __result;}/* Convert a host short to a network short.  */static __inline__ unsigned shorthtons (unsigned int __arg){  register unsigned short __result;  __asm__ ("xchg%B0 %b0,%h0" : "=q" (__result) : "0" (__arg));  return __result;}#elif ((defined (__i860__) && !defined (__i860_big_endian__))	\       || defined (__ns32k__) || defined (__vax__)		\       || defined (__spur__) || defined (__arm__))#ifndef __BYTE_ORDER__#define __BYTE_ORDER__ __LITTLE_ENDIAN__#endif/* For other little-endian machines, using C code is just as efficient as   using assembly code.  *//* Convert a host long to a network long.  */static __inline__ unsigned longhtonl (unsigned long __arg){  register unsigned long __result;  __result = (__arg >> 24) & 0x000000ff;  __result |= (__arg >> 8) & 0x0000ff00;  __result |= (__arg << 8) & 0x00ff0000;  __result |= (__arg << 24) & 0xff000000;  return __result;}/* Convert a host short to a network short.  */static __inline__ unsigned shorthtons (unsigned int __arg){  register unsigned short __result;  __result = (__arg << 8) & 0xff00;  __result |= (__arg >> 8) & 0x00ff;  return __result;}#else /* must be a big-endian machine */#ifndef __BYTE_ORDER__#define __BYTE_ORDER__ __BIG_ENDIAN__#endif/* Convert a host long to a network long.  */static __inline__ unsigned longhtonl (unsigned long __arg){  return __arg;}/* Convert a host short to a network short.  */static __inline__ unsigned shorthtons (unsigned int __arg){  return __arg;}#endif /* big-endian *//* Convert a network long to a host long.  */static __inline__ unsigned longntohl (unsigned long __arg){  return htonl (__arg);}/* Convert a network short to a host short.  */static __inline__ unsigned shortntohs (unsigned int __arg){  return htons (__arg);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -