[PHP-dev 85] Re: [PHP-users 3119] Re: PHP 4.1.0RC1

Osamu Shigematsu php-dev@php.gr.jp
Fri, 26 Oct 2001 11:45:56 +0900


重松です。こんにちは。

>> C 言語的には問題ないのではないでしょうか。
> 
> 細かいANSI Cの規格を知らないので、何ともいえませんが、
> 問題となるCコンパイラも多いと思います。
> 
> 私のコンパイラは
> 
> [yohgaki@dev RC]$ gcc -v
> Reading specs from /usr/lib/gcc-lib/i586-redhat-linux/2.96/specs
> gcc version 2.96 20000731 (Kondara MNU/Linux 2.0)

今、ちょっと仕様書が手元にないので、確認できません。すみません。

[shige@Dronjo shige]$ gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/specs
gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)

#include <stdio.h>

int main(void)
{
    char a[] = {1,2,3};
    char b[] = {1,2,3,};
    
    printf("%d %d\n", sizeof a, sizeof b);
    
    return 0;
}

はどちらも 3 で同じでした。

もうちょっと複雑に、

#include <stdio.h>

int main(void)
{
    struct t{
        int i;
        double d;
    }s[] = {
        {1,1.0,},
        {2,2.0,},
    };
    
    printf("%d\n", sizeof(s)/sizeof(struct t));
        
    return 0;
}

ももちろん、OK でした。

CodeWarrior でも試しましたが、問題ありませんでした。

言うまでもないですが、enum だと、最後に空の不当な要素ができてしまいますから、
NG になりますね。

-- 
Osamu Shigematsu

http://www.ravi.ne.jp/%7eshige/
mailto:shige@ravi.ne.jp