Linux中的LARGE_INTEGER和BYTEtypes?

我正在学习一个Windows代码转换到Linux和这个答案在这里 。 在Linux中LARGE_INTEGER和BYTE之间可能没有内部数据types,因此可能需要考虑特殊情况。

在Linux中,这两种数据types可能被以下两种数据types所取代

  • uint64_t中
  • 无符号字符

第一个是stdint.h的一部分。 我build议用uint64_treplaceLARGE_INTEGER和BYTE,但不能确定。

哪些Linux数据types可以用来代替LARGE_INTEGER和BYTE?


下面的文件是这里描述的National Instruments的MCA 8000A驱动程序的一个例子。

MictoTime.h

 ////////////////////////////////////////////////////////////////////// // // MicroTime.h: interface for the MicroTime class. // // This header file is a part of the PMCA COM package // // Amptek Inc. 2000 // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_MICROTIME_H__495147C7_F0B7_11D1_B62F_9CFF0CC10000__INCLUDED_) #define AFX_MICROTIME_H__495147C7_F0B7_11D1_B62F_9CFF0CC10000__INCLUDED_ #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 class MicroTimeType { LARGE_INTEGER m_startTime; double m_microScale; BOOL m_waiting; public: MicroTimeType(); LARGE_INTEGER GetCounter(); double Get(void); double Wait(double microSec); void CancelWait(void); }; #endif // !defined(AFX_MICROTIME_H__495147C7_F0B7_11D1_B62F_9CFF0CC10000__INCLUDED_) 

你需要在这里添加新的答案吗? 你需要在其他地方定义uint8_t吗?

Solutions Collecting From Web of "Linux中的LARGE_INTEGER和BYTEtypes?"

您可以在Windows API和工具链中看到C中数据类型的参考 。

LARGE_INTEGER实际上是一个表示有符号的64位整数的联合,这在历史上已经在一些API中使用了。 简单的typedef int64_t LARGE_INTEGER; 将无法按预期工作。

你将需要这样的东西:

 #include <stdint.h> typedef uint8_t BYTE; typedef uint32_t DWORD; typedef int32_t LONG; typedef int64_t LONGLONG; typedef union _LARGE_INTEGER { struct { DWORD LowPart; LONG HighPart; }; struct { DWORD LowPart; LONG HighPart; } u; LONGLONG QuadPart; } LARGE_INTEGER, *PLARGE_INTEGER;