- 1 名前:名無ぴ [2011/06/23(木) 07:22:28]
- struct unko{
int len;
char name[];
};
と
struct unko{
int len;
char* name;
};
はまったく違うし。
って言われたんだけど何が違うかわかりません
具体的にどう使ったときどう違うのか教えてエロイ人
- 14 名前:ハトダンナ ◆CHADANur5o [2011/06/24(金) 10:41:22]
- 直後にある malloc した領域にアクセスするような使い方があるようです。
Using and Porting GNU CC - C 言語ファミリに対する拡張
http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.8.1/gcc_3.html
長さ 0 の配列
GNU C では長さが 0 の配列を使うことができます。 長さが 0 の配列は、 構造体の最後の要素として大変役に立ちます。 それは実際には、 可変長オブジェクトのヘッダとなります。
struct line {
int length;
char contents[0];
};
{
struct line *thisline = (struct line *)
malloc (sizeof (struct line) + this_length);
thisline->length = this_length;
}
- 15 名前:名無ぴ [2011/06/24(金) 13:15:18]
- 処理系依存の裏技ってことでおk?
- 16 名前:名無ぴ [2011/06/25(土) 09:17:29]
- 同じくc言語なのに、機種によって
開発別にしなきゃなんないのはなに
- 17 名前:ハトダンナ ◆CHADANur5o [2011/06/25(土) 13:47:34]
- 機種が異なるからです。
たとえば、ある機種Aでは40番目の信号線に電気を流すとバックライトが明るくなるとします。
別の機種Bではバックライトを明るくするには107番目と108番目の信号線の両方に電気を流す必要があり、40番目の信号線に電気を流すと警報音が鳴るとします。
このような時、A用のバックライトを明るくするプログラムをBで動かすと、警報音が鳴り響いてしまいます。
ドライバやOSがその差異を吸収してくれれば(バックライト制御プログラムが準備されていて呼び出せばいい場合などは)同じプログラムでいいですが、吸収してくれない場合には、プログラムを変える必要があります。
- 18 名前:名無ぴ [2011/06/25(土) 13:49:09]
- さすがにNHKで教えてただけあってわかりやすいな
TrackBackURL :: http://chadan.org/test/tback.cgi/talk/1308781348/