簡體   English   中英

const void指針的C ++語法

[英]C++ syntax for const void pointer

使用const void指針時,我需要C ++語法方面的幫助。

我通過一個函數const void數組(即我不知道它是什么數據類型)。 然后,我需要逐字節將內存塊復制到本地無符號char數組中(偏移量為2)。
局部數組在函數外部聲明,我知道它將永遠足夠大。 這是代碼:

void writeFram(const void* data, unsigned int startAddr, size_t size)
{
    i2cBuffer[0] = startAddr >> 8;
    i2cBuffer[1] = startAddr & 0xFF;
    for(unsigned char i=0;i<size;++i)
    {
        i2cBuffer[i+2] = *static_cast<unsigned char*>(data);
    }
}

我得到的錯誤是:錯誤:從類型'const void *'到類型'unsigned char *'的static_cast丟棄了限定符

不要拋棄constness:

i2cBuffer[i+2] = *static_cast<const unsigned char*>(data)
//                            ^^^^^

這就是const_cast目的。 但是您不應該使用它。 強制轉換為const unsigned char *並沒有錯,因為您將要復制該值。

當然,您也可以使用memcpy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM