Tag: nesc

创建数据包时编译错误

我正在研究这个关于tinyos的教程,我想尝试一下。 我尝试创建数据包但它给我以下错误。 我不知道出了什么问题。 它可能很简单,但我无法弄清楚它是什么。 #include “TestMsg.h” … event void AMControl.startDone(error_t error) { if (error == SUCCESS) { call Leds.led0On(); //create packet TestMsg_t* msg = call Packet.getPayload(&packet, sizeof(TestMsg_t)); msg->NodeID = TOS_NODE_ID; // // //TODO in the meantime this can change // button_state_t val = call Get.get(); // msg->Data = ( val == BUTTON_PRESSED ? 1 : […]

可以使用代码块作为C宏的参数吗?

我有一个模式,基本上是一些样板代码,其中一部分在中间变化 if(condition){ struct Foo m = start_stuff(); { m.foo = bar(1,2); m.baz = 17; } //this part varies end_stuff(); } 是否可以使宏taht将该中间代码块作为参数? C中宏扩展的规则看起来非常复杂,所以我不确定将来是否会出现任何可能会让我感到困扰的极端情况(特别是,我不明白如果我的代码如何分离宏参数有逗号)。 #define MY_MACRO(typ, do_stuff) do { \ if(condition){ \ struct typ m = start_stuff(); \ do_stuff; \ end_stuff(); \ } \ }while(0) //usage MY_MACRO(Foo, { m.foo = bar(1,2); m.baz = 17; }); 到目前为止,我设法想到的唯一的事情是,如果我在宏中使用循环语句,则会break并continue捕获,这对我的特定用例来说是可接受的权衡。 编辑:当然,如果可以的话,我会使用一些function。 […]