以下のコードでは、関数mraa_spi_write_buf()
を使用して次の警告が表示されます。c-errorコンパイル時に配列名がポインタに壊れる
警告:割り当ては、キャストせずにポインタの整数を行う [-Wint変換] READ_DATA [0] = mraa_spi_write_buf(SPI、CMD、2)。
私は配列名がcのポインタに崩壊すると思ったのですか?
これは機能
uint8_t * mraa_spi_write_buf (mraa_spi_context dev, uint8_t *data, int length).
#include "mraa.h"
#include <stdio.h>
#include <unistd.h>
int main()
{
uint8_t cmd[2] = {0xAA, 0xFF};
uint8_t read_data[2];
read_data[0] = mraa_spi_write_buf(spi, cmd, 2);
}
アレイを割り当てていますか?よく見てみましょう! 'read_data [0]'のタイプは何ですか? – datell
"配列名がポインタの中で崩壊すると思ったのですか?" - 常にではない。配列はポインタではありません。あなたが何をしようとしているのかははっきりしていません。それはまったく意味がありません。 – Olaf
まあ、ほとんど*いつも。例外は「sizeof」演算子、「_Alignof」演算子、または単項演算子のオペランドである場合、または配列を初期化するために使用される文字列リテラルである場合」(C2011,6.3.2.1/3)。しかし、それはあなたのコード内の問題とは関係ありません。 –