windows std::byte的C版本是什么(用于正确处理IO)

hyrbngr7  于 2023-03-31  发布在  Windows
关注(0)|答案(2)|浏览(143)

下面的C版本new std::byte[sizeof(data)]在普通C中的等价物是什么?
我试图在普通C(Windows 10)中创建一个系统字节缓冲区,这样我就可以传入一个空指针,以便通过IOCTL与内核驱动程序通信。
问题是我看到的例子是用C
写的,我正在试图弄清楚如何用普通C写它。
下面是我正在尝试转换的C++代码的示例:

std::byte* buffer;

try {
    buffer = new std::byte[sizeof(data)];
}
catch (const std::exception& e) {
    throw gcnew InteropException(e);
}

// Fill the buffer here

try {
    write(buffer); // Buffer is passed in as a void* aka PVOID
    delete[] buffer;
}
catch (const std::exception& e) {
    delete[] buffer;
    throw gcnew InteropException(e);
}
tcomlyy6

tcomlyy61#

下面的C++版本new std::byte[sizeof(data)]在普通C中的等价物是什么?
使用malloc()/free(),例如:

unsigned char *buffer = malloc(sizeof(data));
if (buffer == NULL) {
    // handle error as needed...
    return;
}

// Fill the buffer here

write(buffer);
// error handling as needed...

free(buffer);
htrmnn0y

htrmnn0y2#

std::byte

enum class byte : unsigned char {} ; // (since C++17)

因此,

typedef unsigned char byte;

typedef enum byte : unsigned char {} byte;  // (since C23)

相关问题