为什么用两个参数调用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

上一篇: Why call sizeof operator with two arguments?

下一篇: Implicit type promotion rules