我有一个声明为
的缓冲区uint8_t buffer[1000];
这是加载数据然后发送到这样的函数:
Send_Data(buffer);
该函数声明为:
void Send_Data(uint8_t data[])
但是当我进入函数时,数据数组是空的。
我可能做错了什么?
答案 0 :(得分:1)
除了你在问题中解释的内容之外,你肯定做错了 else 错误。这段代码工作正常:
#include <stdio.h>
#include <inttypes.h>
#include <stdint.h>
void Send_Data(uint8_t data[]) {
printf ("%d\n", data[0]);
}
int main (void) {
uint8_t buffer[1000];
buffer[1] = 0;
buffer[0] = 65;
Send_Data (buffer);
buffer[0] = 66;
Send_Data (buffer);
return 0;
}
产生输出:
65
66
因为,正如上述计划所证明的那样,很有可能做你想做的事情,并且因为你的问题中没有足够的信息来进一步缩小问题,我们能做的最好的就是通用性:
在函数调用之前检查 是否真正填充了数组。
不一定依赖调试器来告诉您函数中的数组未填充:打印其中一些是确定的。
以完全相同的方式运行上述程序,看看你在函数内部的数组中得到了什么。特别是,查看它是否被视为C字符串(将显示为"A"
和"B"
)。