【发布时间】:2013-09-06 09:08:07
【问题描述】:
我正在使用这样的结构与 spidev 传输一些数据
struct spi_ioc_transfer tr = {
.tx_buf = (unsigned long)tx, // transferred
.rx_buf = (unsigned long)rx, // received
.len = ARRAY_SIZE(tx),
.delay_usecs = delay,
.speed_hz = speed,
.bits_per_word = bits,
};
我要发送的数据是uint8_t tx[] = {0xAC, 0xDC}
所以我像这样投射数组:msg.tx_buf = (unsigned long)tx;
但这不利于可移植性并且它依赖于字节序。 有没有更好更快的方法来做到这一点? 我还需要比较 msg.tx_buf 和 msg.rx_buf 的值,以确保值写入正确。
谢谢
【问题讨论】:
-
以这种方式初始化结构成员的语法是什么?据我所知,这不是有效的 C++?
-
@jcoder:我以前见过,我认为它与C99规范有关。 C++0x 很可能采用了它。就像新的 C 和 C++ 规范中的大多数东西一样,它让我感到沮丧,因为它真正做的唯一事情就是让代码更难阅读:)
-
请使用正确的 C++ 转换而不是 C 转换。
-
代码取自 spidev_test.c。 kernel.org/doc/Documentation/spi/spidev_test.c 所以它是 C 语法,没有 C++。对此感到抱歉。
标签: c++ arrays performance casting