为什么用两个参数调用sizeof运算符?
我最近遇到了一些看起来像这样的代码:
if(sizeof(var,2) == 4) { ... }
(其中var
是一个类型)
看到sizeof
运算符似乎有两个参数,我感到非常惊讶。 对ISO / ANSI C99标准的快速扫描没有产生任何秘密。 我无法想出任何可以在那里得到逗号的语法。
搜索谷歌代码,我能够在一些PPC代码中找到这种语法的例子。
这是一些PPC特定的语法吗? 这是什么意思?
编辑:事实证明,我所看到的 - 以及链接的代码 - 是特定于WindRiver Diab编译器的语法:
sizeof (type,int-const):
如果int-const为0, sizeof返回类型的字节大小。
如果int-const是1,则sizeof返回类型的对齐方式。
如果int-const是2, sizeof将返回一个指定类型类型的整数常量。 在Diab C / C ++用户指南中查找“sizeof运算符”的值。
哇,他们真的超载了sizeof
运算符的意义。
编辑2:完整的文档在这里:http://www.vxdev.com/docs/vx55man/diab5.0ppc/c-additi.htm#3001432
在进一步的研究中,我发现这是WindRiver Diab编译器特有的行为。 有关详细信息,请参阅问题中的编辑 。
它看起来像一个简单的逗号运算符应用程序,它评估它的第一个参数,抛出结果,然后评估它的第二个参数。
在这种情况下,它确定文字2
是否具有大小4.“ var
”部分是不相关的。
看起来像一个红色的鲱鱼。 我的猜测是你不小心使用了逗号运算符,sizeof正被应用到最后一个值。
链接地址: http://www.djcxy.com/p/21143.html