2

我遇到了以下代码行:

              memcmp(mac, (char []){0x01,0x00,0x5E}, 3)

也许它会起作用;以上述方式编码 memcmp 可以吗?谢谢。

4

3 回答 3

5

是的,它会起作用,没问题,它与以下内容相同:

char arr[] = {0x01,0x00,0x5E};
memcmp(mac, arr, 3);
于 2012-04-17T09:15:37.943 回答
3

是的,没关系。像这样匿名声明一个数组,称为“复合文字”。这是在 C 语言中与 C99 标准一起引入的一项功能,适用于所有遵循该标准的编译器。它不适用于 Visual C++ 等非标准编译器。

但是,您应该考虑将其声明为const char,这样会更正确,也可能会带来更好的优化,因为const可能会使编译器/链接器更容易将数组放置在静态 ROM 中而不是堆栈中。

于 2012-04-17T10:03:24.893 回答
0

在这种情况下,数组与指针在任何方面都没有真正的区别(关键字“数组到指针衰减”)。

由于 C 允许您以这种方式定义临时数组,因此您可以使用这种表示法来测试在编译时已知在您的mac数组中的一堆值。

于 2012-04-17T09:43:44.443 回答