我只注意到在C++ 17C + + 17中的std :: byte与C#中的byte相当吗?
std::byte
我问这个问题,因为我用下面的代码的字节数组发送到C++播放音频声音。
C#:
[DllImport ("AudioStreamer")]
public static extern void playSound (byte[] audioBytes);
C++:
#define EXPORT_API __declspec(dllexport)
extern "C" void EXPORT_API playSound(unsigned char* audioBytes)
在C++ 17的新byte
类型,它看起来像我可能能够做到这一点现在:
C#:
[DllImport ("AudioStreamer")]
public static extern void playSound (byte[] audioBytes);
C++:
#define EXPORT_API __declspec(dllexport)
extern "C" void EXPORT_API playSound(byte[] audioBytes)
我不知道这是否会甚至工作,因为我用的编译器不支持byte
在C++ 17呢。
那么,在C++中是std::byte
在C++ 17中相当于byte
?是否有理由不使用std::byte
而不是unsigned char*
?
值得一读http://stackoverflow.com/questions/43143318/stdbyte-on-odd-platforms。它从奇怪的平台开始,但答案涵盖了所有的基础知识。 –
C#**要求**字节正好是8位,但如果您正在互操作C++和C#,则可以放心地假设C++也在使用8位字节 – MSalters