您好,我的C代码有小问题:

 //Hardcoded commands:

 #define someCommand 0x1223;
 #(...)

 //functions definitions:
 void socketWrite(uint8_t address, const uint8_t *data, size_t length);

 //main task
 int main(){

 //I want send someCommand to socket
 socketWrite(0xff, &someCommand, 1);

 (...)
 }


这段代码当然给了我编译错误:
错误:在此范围内未声明“ someCommand”

但是我的问题是如何在不创建可以处理此命令的新缓冲区数据的情况下正确编写此代码:

uint8_t * buff;
*buff = someCommand;
socketWrite(0xff, buff, 1);

最佳答案

someCommand是#define。 C预处理器通过将其替换为源文本来生成源文本。
因此您的代码如下所示:

socketWrite( 0xff, &0x1223, 1 );


地址为0x1223是不可能的。

int value = someCommand;
socketWrite( 0xff, &value, 1 );


可能有效

除此以外:

const int someCommand = 0x1223;


然后

socketWrite(0xff, &someCommand, 1);

09-05 05:08