【ANSI-C】 C言語なら俺に聞け! Part 129
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/08/27(日) 15:43:44まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。
エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/250-7563469-9920244
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
前スレ
【ANSI-C】 C言語なら俺に聞け! Part 128
http://pc8.2ch.net/test/read.cgi/tech/1151282084/
GUIなどの標準Cではできない事の質問,ソース丸投げ、宿題、書籍 は
専門の別スレッド↓があるのでそこへさようなら。
【初心者歓迎】C/C++室 Ver.30【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1156145524/
C/C++の宿題を片付けます 73代目
http://pc8.2ch.net/test/read.cgi/tech/1155355501/
新・推薦図書/必読図書のためのスレッド 1
http://pc8.2ch.net/test/read.cgi/prog/1146889623/
0951デフォルトの名無しさん
2006/09/30(土) 12:45:290952デフォルトの名無しさん
2006/09/30(土) 12:46:180953デフォルトの名無しさん
2006/09/30(土) 12:48:31動く保証は全くない。
0954デフォルトの名無しさん
2006/09/30(土) 12:48:330955デフォルトの名無しさん
2006/09/30(土) 12:49:280956デフォルトの名無しさん
2006/09/30(土) 12:52:230957デフォルトの名無しさん
2006/09/30(土) 12:58:24現状で最適なのは
・作り直す
・unionしちゃう
くらい
0958デフォルトの名無しさん
2006/09/30(土) 13:00:28これほど刺激的な事もそうそうないだろ?
0959デフォルトの名無しさん
2006/09/30(土) 13:05:080960デフォルトの名無しさん
2006/09/30(土) 13:07:11ありがとうございました
0961デフォルトの名無しさん
2006/09/30(土) 13:16:39vbのspaceみたいなもんやろ?
0962デフォルトの名無しさん
2006/09/30(土) 14:45:54本当にメンバが完全に同一ならとりあえずはtest(*(A*)&test2);で行けると思う。
0963デフォルトの名無しさん
2006/09/30(土) 15:07:31なんでそんな面倒なキャストするの?
0964デフォルトの名無しさん
2006/09/30(土) 15:23:44親子関係のないクラスはこれぐらいしたらんと。
0965デフォルトの名無しさん
2006/09/30(土) 15:36:51スレ違い
0966デフォルトの名無しさん
2006/09/30(土) 15:39:020967デフォルトの名無しさん
2006/09/30(土) 15:43:48>Aという型とBという型を作ったとします。メンバの数は同じで型もすべてintです
パディング?
0968デフォルトの名無しさん
2006/09/30(土) 15:54:500969デフォルトの名無しさん
2006/09/30(土) 16:06:42少なくともメンバの型の並びが同じなら、パディングもまた同じ場所。
0970デフォルトの名無しさん
2006/09/30(土) 16:06:47>Aという型とBという型を作ったとします。メンバの数は同じで型もすべてintです
よって、同じメモリの割り当てをされると結論づけられるとでも思ってるの?
そんなこと規格書のどこに書いてあるの?
0971デフォルトの名無しさん
2006/09/30(土) 16:07:46Cってメモリレイアウトまで規定してたっけ?
してなければそんなに強く言わないほうがいいよ
0972デフォルトの名無しさん
2006/09/30(土) 16:09:030973デフォルトの名無しさん
2006/09/30(土) 16:13:00構造体の表記とメモリレイアウトが完全に一致するかどうかなんてコンパイラの気分次第かもしれないし
とりあえずトリッキーなことをするときは仕様書とにらめっこしてからじゃないと「こうだ」とは言えないから困る
0974デフォルトの名無しさん
2006/09/30(土) 16:23:380975デフォルトの名無しさん
2006/09/30(土) 16:30:040976デフォルトの名無しさん
2006/09/30(土) 16:39:20あれ?コテ入れ忘れてるよ?
0977デフォルトの名無しさん
2006/09/30(土) 16:52:30今目の前にあるコンパイラがそうなら別に不満はないが。
0978デフォルトの名無しさん
2006/09/30(土) 16:54:00じゃないと、
A a;
A b;
memcmp(&a,&b,sizeof(A));
とか出来なくなりますよね。
0979デフォルトの名無しさん
2006/09/30(土) 16:57:16それは駄目なんじゃね?とか言ってみる。
0980デフォルトの名無しさん
2006/09/30(土) 17:04:10そうなるとsizeof(A)の値が不定になっちゃいませんか?
0981979
2006/09/30(土) 17:04:290982デフォルトの名無しさん
2006/09/30(土) 17:32:320983デフォルトの名無しさん
2006/09/30(土) 17:43:270984デフォルトの名無しさん
2006/09/30(土) 17:54:44質問するスレを間違えてんじゃねえのか。
0985デフォルトの名無しさん
2006/09/30(土) 18:07:11いやmemcmpとかANSIで規定されてる関数だけど、そもそもCさんとは無関係でしょ?
(Cの思想が「必要なものは全てライブラリに」だから)
で、表記とそれのメモリレイアウトの関係を決めるのはCのコンパイラさんだけど、その決め方の規約みたいなのをちゃんと読んだ上での話なんだよね?
0986デフォルトの名無しさん
2006/09/30(土) 18:27:100987デフォルトの名無しさん
2006/09/30(土) 18:46:51移植あるし。
0988デフォルトの名無しさん
2006/09/30(土) 19:25:48JIS X 3010:2003 6.2.6の註(42)に構造体の代入にmemcpyを使っても良いと書いてある。
C++だが、JIS X 3014:2003 9.2 14〜17節にて、
非静的データメンバが同一なC互換構造体・共用体 (POD)同士は配置適合であり、
962のようなことをしても平気というようなことが書かれてある。
たぶんCにも同じような規定があると思うんだけどな。
0989デフォルトの名無しさん
2006/09/30(土) 19:58:09【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130
http://pc8.2ch.net/test/read.cgi/tech/1159613789/
0990デフォルトの名無しさん
2006/09/30(土) 20:03:500991デフォルトの名無しさん
2006/09/30(土) 21:02:140992デフォルトの名無しさん
2006/09/30(土) 21:44:140993デフォルトの名無しさん
2006/10/01(日) 02:20:50その理由は?
memcpyでコピーできるならメモリイメージは同じはずです。
0994デフォルトの名無しさん
2006/10/01(日) 02:32:04あるかもってことでしょう。きっと。
0995デフォルトの名無しさん
2006/10/01(日) 02:44:15というわけで、個人個人のバカが見えてくるスレになってきました
0996デフォルトの名無しさん
2006/10/01(日) 07:45:120997デフォルトの名無しさん
2006/10/01(日) 08:24:08つか、
struct tag
{
int a, b;
} A =
{
0
};
とかでもbん中は初期化されますぜ。
0998デフォルトの名無しさん
2006/10/01(日) 08:32:01それが義務付けられているわけではないのだから、当てにするのは間違い。
ましてそういう習慣のままC++に移行してどつぼにはまる原因になりかねない。
0999デフォルトの名無しさん
2006/10/01(日) 10:40:121000デフォルトの名無しさん
2006/10/01(日) 10:42:23【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130
http://pc8.2ch.net/test/read.cgi/tech/1159613789/l50
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。