在我的 ISR 中,我有一个从 USART 填充的缓冲区,所以我将该缓冲区声明为 volatile 的:
volatile uint8_t RxBuffer1[BUFFER_LENGTH];
好的,没问题。我相信这是标准做法。
在 main() 的某个地方,我需要复制该数组的一部分,因为该数组是一个循环缓冲区,并且会在将来的某个时候被删除:
strncpy(Data, RxBuffer1, len);
哦,但这是不行的!我的编译器忠实地告诉我:
passing argument 2 of 'strncpy' discards 'volatile' qualifier from pointer target type
因为 strncpy 使 's2' 成为 const char *
我不认为我在做任何没有按照标准做法做过的事情。我该如何正确执行此操作?
最佳答案
转换传递给 const char *
的参数
关于arrays - 将 volatile 数组传递给 strncpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8943592/