【雑談】フレキシブル配列メンバ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
keichan

【雑談】フレキシブル配列メンバ

#1

投稿記事 by keichan » 18年前

http://www.play21.jp/board/formz.cgi?ac ... q&rln=1338
のスレで話題になっていた情報の詳細が別所で議論されていましたので紹介しておきます。

http://forums.belution.com/ja/cpp/000/063/47s.shtml

どうやらC89では未定義だったものがC99で採用されていたみたいです。

Hermit

Re:【雑談】フレキシブル配列メンバ

#2

投稿記事 by Hermit » 18年前

むかし出てきたことがありましたが、
(名前は特に無かったと思う)
ANSI 規格では明記されていませんでしたが、
FAQの様な、いろんな情報が、ANSI C89 制定後に、ANSI より出て来ている筈ですが、
そこで、このように使えるというサンプルが出たことがあるそうです。
ということで、後付ですが、ANSI C89 の定義の範囲内だったはずです。

サンプルは、
struct foo {
struct foo *next;
char str[1];
}
の、str に文字列を入れる様なかきかただったはず。
当然ですが、サイズ 0 のメンバはANSI は認めていないので、
gcc の str[0] や、bcc,cl などの str[/url] 形式は ANSI は認めていなかったはず。
今の C99 はどうかな?

ついでに、この手法は、ANSI 以前からあった方法だったと記憶しています。
MSC4 などのヘッダファイルの中にも有った様な気が・・・

keichan

Re:【雑談】フレキシブル配列メンバ

#3

投稿記事 by keichan » 18年前

Hermitさん、さらに突っ込んだ情報ありがとうございます。

>ということで、後付ですが、ANSI C89 の定義の範囲内だったはずです。
そうでしたか。C89の範疇に入っていたのですか。

>gcc の str[0] や、bcc,cl などの str[/url] 形式は ANSI は認めていなかったはず。
>今の C99 はどうかな?
JISX3010:2003(ISO/IEC9899:1999)を確認しましたが、特記事項として書いてありませんでした。

閉鎖

“C言語何でも質問掲示板” へ戻る