linux - Linux 中的 LARGE_INTEGER 和 BYTE 类型?

标签 linux windows

我正在研究一个转换为 Linux 的 Windows 代码和这个答案 here . Linux 中 LARGE_INTEGER 和 BYTE 之间可能没有单射数据类型,因此可能需要考虑特殊情况。

这两种数据类型在 Linux 中可能被以下两种替代

  • uint64_t
  • 无符号字符

其中第一个是 stdint.h 的一部分。 我建议用 uint64_t 替换 LARGE_INTEGER 和 BYTE 但不确定。

哪些 Linux 数据类型可以代替 LARGE_INTEGER 和 BYTE?


以下文件是 National Instruments 的 MCA 8000A 驱动程序的案例示例 here .

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_)

你需要在这里添加新的类型吗 answer ? 您是否需要在其他任何地方定义 uint8_t

最佳答案

可以看到the reference适用于 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;

关于linux - Linux 中的 LARGE_INTEGER 和 BYTE 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31129200/

相关文章:

c++ - 使用 CSplitterWindowImpl 处理移动并使子 Pane 无效

c++ - 在 C/C++ 中创建 Windows 服务的任何示例? (无图形用户界面)

php - 从带引号的标签和值的格式化分隔字符串中获取值

linux - 命令输出、管道、脚本联动

php - 逐行读取文本文件并在每一行中搜索另一个文件 php 脚本

linux - 使用文件 url 访问文件

c++ - 如何定义一个可以自省(introspection)的新 d-bus 接口(interface)?

windows - NSIS 安装程序应用程序名称未正确显示

windows - RoleEntryPoint.OnStart() 是否可以在主机清理之前运行两次?

c++ - 自定义窗口皮肤,