我只注意到在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