C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
前
http://echo.2ch.net/test/read.cgi/tech/1487757355/
http://www.geocities.jp/c_cpp_cs/about_c/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
C言語なら俺に聞け 140 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 6f8c-8ulf)
2017/05/11(木) 22:20:03.99ID:cn414UR90153デフォルトの名無しさん (ワッチョイ de1f-bwHs)
2017/05/21(日) 12:51:40.59ID:EZ567Ylh0 最近は初心者を騙すのが流行しているのか
154デフォルトの名無しさん (ワッチョイ ca72-ysFl)
2017/05/21(日) 13:33:41.41ID:LBGUGIAq0 linuxでc言語開発したいんですが、IDE使わないのが一般的なんですか?
155デフォルトの名無しさん (アウアウエー Sac2-PCQh)
2017/05/21(日) 13:45:10.14ID:2TTm6ATPa はい。
CやJavaならEclipseが一般的かと。
Eclipseにサポートして貰ってないのはviやemacsカスタマイズしてIDEとして使う感じ。
CやJavaならEclipseが一般的かと。
Eclipseにサポートして貰ってないのはviやemacsカスタマイズしてIDEとして使う感じ。
156デフォルトの名無しさん (アウアウエー Sac2-PCQh)
2017/05/21(日) 13:45:35.47ID:2TTm6ATPa あ、はい。は忘れてw
157デフォルトの名無しさん (ワッチョイ dea9-ysFl)
2017/05/21(日) 15:31:07.21ID:Mj8j7wxe0 >>132もおねがいします
158デフォルトの名無しさん (ワッチョイ afcd-cm4/)
2017/05/21(日) 15:34:52.30ID:kPjNSBDr0 >>157
質問文が酷すぎて、何を聞きたいのか理解されてないだけだぞ
質問文が酷すぎて、何を聞きたいのか理解されてないだけだぞ
159デフォルトの名無しさん (ワッチョイ 9ec5-gT+F)
2017/05/21(日) 16:54:32.37ID:bYtGqajI0 >>154
最近は yacc じゃなくて何か新しいのあるんだよね。
最近は yacc じゃなくて何か新しいのあるんだよね。
160デフォルトの名無しさん (ワッチョイ ca3c-J3Da)
2017/05/21(日) 17:27:25.62ID:1Ubd4ETn0 >>159
最近じゃないけど bison とかか?
最近じゃないけど bison とかか?
161デフォルトの名無しさん (ワッチョイ aa18-JCxV)
2017/05/21(日) 17:32:24.58ID:ViqOYprV0 何でいきなり構文解析器の話になった?
162デフォルトの名無しさん (ワッチョイ cb92-a1Gw)
2017/05/21(日) 17:53:33.03ID:Qv//Z9+/0163デフォルトの名無しさん (ワッチョイ 0bae-xuou)
2017/05/21(日) 17:53:37.15ID:/ema5D/U0 c言語作るって言ってるからでしょ
164デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/21(日) 17:59:27.49ID:EhbYbiNc0165デフォルトの名無しさん (アウアウエー Sac2-PCQh)
2017/05/21(日) 18:06:09.69ID:zNfd0kUpa はいはい,そりゃ配列とポインタは互換じゃないよ
分かりやすい説明はないものかね‥
分かりやすい説明はないものかね‥
168デフォルトの名無しさん (ワッチョイ 6b3c-kvD5)
2017/05/21(日) 19:20:07.02ID:lXB+sVuE0 %f は 引数を double 仮定で引き出す
呼び出し側は (可変長引数の可変部なので) doubleに格上げしてから引数に詰んでる
詰んでるものと引き出すものの食い違いはおきてないんじゃないかね
呼び出し側は (可変長引数の可変部なので) doubleに格上げしてから引数に詰んでる
詰んでるものと引き出すものの食い違いはおきてないんじゃないかね
170デフォルトの名無しさん (アウアウエー Sac2-PCQh)
2017/05/21(日) 19:29:57.61ID:zNfd0kUpa171デフォルトの名無しさん (ワッチョイ afcd-cm4/)
2017/05/21(日) 19:40:24.59ID:kPjNSBDr0 配列型の"式"は、一部のケースを除いてポインタ型の式に"型変換"される、それは配列の先頭要素を指す、また左辺値でもない
関数の実引数での使用についてなら、>>147の既定の実引数拡張でfloatがdoubleに拡張(型変換)される例と同じような話だと思うんだけどな
関数の実引数での使用についてなら、>>147の既定の実引数拡張でfloatがdoubleに拡張(型変換)される例と同じような話だと思うんだけどな
172デフォルトの名無しさん (アウアウエー Sac2-PCQh)
2017/05/21(日) 20:10:14.64ID:zNfd0kUpa >>146
おいらはこれ、sizeofが関数じゃなくて演算子って呼ばれてるのが肝で、関数に配列渡しても何故かポインタのサイズじゃなくて配列サイズ返す謎な奴って解釈してるな。
おいらはこれ、sizeofが関数じゃなくて演算子って呼ばれてるのが肝で、関数に配列渡しても何故かポインタのサイズじゃなくて配列サイズ返す謎な奴って解釈してるな。
173デフォルトの名無しさん (アウアウエー Sac2-PCQh)
2017/05/21(日) 20:19:46.42ID:8VZiX6Z0a174デフォルトの名無しさん (アウアウエー Sac2-PCQh)
2017/05/21(日) 20:24:04.46ID:8VZiX6Z0a >>146
これは配列宣言した場所と同じスコープなら配列のサイズ返すけど、配列を関数に渡した先(関数の中)でこれするとポインタのサイズが返ってくる。
これは配列宣言した場所と同じスコープなら配列のサイズ返すけど、配列を関数に渡した先(関数の中)でこれするとポインタのサイズが返ってくる。
175デフォルトの名無しさん (ワッチョイ ca72-ysFl)
2017/05/21(日) 21:28:16.83ID:LBGUGIAq0 >>155
ありがとう
ありがとう
176デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/21(日) 21:39:54.59ID:EhbYbiNc0 >>174
int main(void)
{
char i[100];
wanker(&i);
return 0;
}
void wanker(char (*j)[100])
{
/* ここは、「配列を関数に渡した先(関数の中)」だが? */
printf("%u", sizeof *j);
}
int main(void)
{
char i[100];
wanker(&i);
return 0;
}
void wanker(char (*j)[100])
{
/* ここは、「配列を関数に渡した先(関数の中)」だが? */
printf("%u", sizeof *j);
}
177デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/21(日) 21:45:09.31ID:EhbYbiNc0178デフォルトの名無しさん (アウアウエー Sac2-PCQh)
2017/05/21(日) 21:53:31.38ID:8VZiX6Z0a179デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/21(日) 22:00:12.54ID:EhbYbiNc0 >>178
どう無理なんだ?
int main(void)
{
int i[100];
booger(&i);
return 0;
}
void booger(int (*j)[100])
{
printf("%u", sizeof *j);
}
どう無理なんだ?
int main(void)
{
int i[100];
booger(&i);
return 0;
}
void booger(int (*j)[100])
{
printf("%u", sizeof *j);
}
180デフォルトの名無しさん (ワッチョイ 6b3c-kvD5)
2017/05/21(日) 22:02:18.84ID:lXB+sVuE0 いやいや sizeof はコンパイル時に確定する演算だから
strlen みたいにポインタの指し先追っかけてデリミタ見つかるまでのバイト数とか 実行時依存じゃない
strlen みたいにポインタの指し先追っかけてデリミタ見つかるまでのバイト数とか 実行時依存じゃない
181デフォルトの名無しさん (アウアウエー Sac2-PCQh)
2017/05/21(日) 22:08:35.89ID:8VZiX6Z0a182デフォルトの名無しさん (ワッチョイ 6b3c-kvD5)
2017/05/21(日) 22:10:30.59ID:lXB+sVuE0 だから sizeof は型さえ類推できれば、変数の実態なくてもいいんだって
なんなら () 付けて 型をかけばいい
なんなら () 付けて 型をかけばいい
183デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/21(日) 22:10:36.85ID:EhbYbiNc0 176でも初期化はしてないが
184デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/21(日) 22:13:36.56ID:EhbYbiNc0185デフォルトの名無しさん (ワッチョイ 6b3c-kvD5)
2017/05/21(日) 22:15:17.46ID:lXB+sVuE0186デフォルトの名無しさん (アウアウエー Sac2-PCQh)
2017/05/21(日) 22:39:46.18ID:fA6hmJLUa >>179
分かってきたかも。
そのコードだと
int *i;
ってポインタ宣言すると
iのままがポインタで、*iがポインタの指す中身だから。。。
配列の実体になるんだ。
もっとシンプルに初心者のやりがちな
int main(void)
{
int i[100];
booger(i[100]);
return 0;
}
void booger(int i[100])
{
printf("%u",sizeof a[100]);
}
こう言うコードだとポインタのサイズが返ってくる。
分かってきたかも。
そのコードだと
int *i;
ってポインタ宣言すると
iのままがポインタで、*iがポインタの指す中身だから。。。
配列の実体になるんだ。
もっとシンプルに初心者のやりがちな
int main(void)
{
int i[100];
booger(i[100]);
return 0;
}
void booger(int i[100])
{
printf("%u",sizeof a[100]);
}
こう言うコードだとポインタのサイズが返ってくる。
187デフォルトの名無しさん (アウアウエー Sac2-PCQh)
2017/05/21(日) 22:41:32.99ID:fA6hmJLUa ちゅーか十何年ぶりのCだったわ。。。
188デフォルトの名無しさん (アウアウエー Sac2-PCQh)
2017/05/21(日) 22:44:28.27ID:fA6hmJLUa sizeof a[100]はタイポだけど許してね。
配列の変数名にiとか普通使わんのよ。
インデックス変数に使うからさ。
a[i]
配列の変数名にiとか普通使わんのよ。
インデックス変数に使うからさ。
a[i]
189デフォルトの名無しさん (ワッチョイ dea9-ysFl)
2017/05/22(月) 06:47:21.18ID:3isejMaU0 void f(void * v, int size, void * x){
*v=*x;
}
上のコードで x の指し示す値のサイズが size であるとき
どのようにvの指し示す場所にxが指し示す値を一度に代入できますか?
*v=*x;
}
上のコードで x の指し示す値のサイズが size であるとき
どのようにvの指し示す場所にxが指し示す値を一度に代入できますか?
190デフォルトの名無しさん (ワッチョイ cb92-z8Tc)
2017/05/22(月) 07:31:20.24ID:uEzgaoxk0 memcpy(*v, *x, size);
191デフォルトの名無しさん (ワッチョイ cb92-z8Tc)
2017/05/22(月) 07:34:49.91ID:uEzgaoxk0 訂正
memcpy(v, x, size);
memcpy(v, x, size);
192デフォルトの名無しさん (ワッチョイ db8c-wnF3)
2017/05/22(月) 07:37:02.82ID:qnT1Y5yL0 >>189
学校の宿題か?
学校の宿題か?
193デフォルトの名無しさん (ワッチョイ 03b9-PZTw)
2017/05/22(月) 08:26:47.95ID:jL5+dSxZ0 for (i=0; i<size; i++) ((int8_t*)v)[i] = ((int8_t*)x)[i];
194デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/22(月) 09:21:02.66ID:uUtJqX7+0 while(size--) *(char*)v++ = *(char*)x++;
195デフォルトの名無しさん (ワッチョイ 03b9-PZTw)
2017/05/22(月) 11:15:09.22ID:jL5+dSxZ0 >>194
文法エラー (v, x のインクリメント操作は void * で評価されてる)
文法エラー (v, x のインクリメント操作は void * で評価されてる)
196デフォルトの名無しさん (ドコグロ MM02-gT+F)
2017/05/22(月) 11:57:30.90ID:WXjICEY9M size の単位が何なのか分からんなぁ。
197デフォルトの名無しさん (ワッチョイ 6bd4-GzPn)
2017/05/22(月) 12:02:49.26ID:HD7uOEeF0 (`・ω・´) ?
198デフォルトの名無しさん (ワッチョイ d3fa-ysFl)
2017/05/22(月) 12:44:29.59ID:+BU32a3i0 最近はCMakeを使うのが普通なの?
GNU Make覚える必要があるかな
話変わるけど、MakeFileってソース1つ追加するたびに、変更する必要がある?
GNU Make覚える必要があるかな
話変わるけど、MakeFileってソース1つ追加するたびに、変更する必要がある?
199デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/22(月) 13:11:20.22ID:uUtJqX7+0200デフォルトの名無しさん (ワッチョイ 03b9-PZTw)
2017/05/22(月) 13:14:30.22ID:jL5+dSxZ0 >>199
あー コンパイルエラーと言えばよかったかw
あー コンパイルエラーと言えばよかったかw
201デフォルトの名無しさん (ワッチョイ cb92-a1Gw)
2017/05/22(月) 13:14:54.60ID:CEFnqLB20 Makefileを作らなくてもmake出来るケースがある事を最近は知らない奴が多い
202デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/22(月) 17:02:12.42ID:uUtJqX7+0 cc love.c じゃなく
make love でいい件か?
make love でいい件か?
203デフォルトの名無しさん (ドコグロ MM02-R0co)
2017/05/22(月) 19:00:44.22ID:J9ejs7e9M makeのデフォルトルールだね
.c.o はよく使う
.c.o はよく使う
204デフォルトの名無しさん (ブーイモ MMea-ysFl)
2017/05/22(月) 19:41:32.06ID:h9CxmUP8M >>201
まじか、知らなかった
まじか、知らなかった
205デフォルトの名無しさん (ワッチョイ b33c-8vqE)
2017/05/22(月) 19:45:14.71ID:yWHDUG7V0 作って覚えるVisual C#のようなゴールを設定して色々学ぶC言語の書籍はありますか?
206デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/22(月) 20:02:28.46ID:uUtJqX7+0 便利にゃ違いないけど
ロクに指示も与えずよきに計らえってスタンスで
何が出来てくるのかに受動的でいることに
俺は我慢できないな
無関心な大将を有能な部下がフォローして事なきを得たってことだろ
ロクに指示も与えずよきに計らえってスタンスで
何が出来てくるのかに受動的でいることに
俺は我慢できないな
無関心な大将を有能な部下がフォローして事なきを得たってことだろ
207デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/22(月) 20:02:58.11ID:uUtJqX7+0 だからスタックサイズのデフォも知らない馬鹿が大量発生するわけだし
>>195
(void *)c++ は1だけインクリメントされる,c99 では規格で決まっている
(void *)c++ は1だけインクリメントされる,c99 では規格で決まっている
210デフォルトの名無しさん (ワッチョイ ffdf-S7GU)
2017/05/22(月) 20:15:17.89ID:5FlvGyv/0 *vがsize分確保されてないんじゃね?
普通こうだよな
void f(void ** v, int size, void * x)
普通こうだよな
void f(void ** v, int size, void * x)
211デフォルトの名無しさん (ワッチョイ 6b3c-kvD5)
2017/05/22(月) 20:16:31.52ID:2o5iWMtc0 >>208
しらなんだ C99 からなのかね
しらなんだ C99 からなのかね
212デフォルトの名無しさん (ワッチョイ 67a3-4oUF)
2017/05/22(月) 21:22:47.69ID:d/63nSXI0 voidがサイズ持ってるとか無理やり過ぎ
便利だけど
便利だけど
213デフォルトの名無しさん (ワッチョイ 0fa5-btfr)
2017/05/22(月) 21:22:49.29ID:lKEcPOEA0 >>208,209
うそつき
うそつき
214デフォルトの名無しさん (ワッチョイ afcd-cm4/)
2017/05/22(月) 21:31:07.71ID:oluY6epY0 1になるのはgcc拡張だろ
215デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/22(月) 21:42:16.48ID:uUtJqX7+0 そういうオチか
ばかたれぃっ!!
ばかたれぃっ!!
216デフォルトの名無しさん (ワッチョイ 0bae-xuou)
2017/05/22(月) 23:25:56.35ID:klirxPDR0 息をするように嘘をつかれた
>>214
C99 からガチで
C99 からガチで
218デフォルトの名無しさん (ワッチョイ 07cd-d60Q)
2017/05/23(火) 09:00:04.50ID:BTD2Lf690 >>208-209>>217
C99規格には「(void *)c++ は1だけインクリメントされる」という規定はない。
C99規格書(ISO/IEC 9899)は英語なのでそれを元にしたJIS X3010で説明する。
X3010は章番号を変えてないのでISO/IEC 9899の該当文章は自分で確認してくれ。
ISO/IEC 9899:TC2
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1124.pdf
JIS X3010
http://kikakurui.com/x3/X3010-2003-01.html
> 6.2.5 型
> 型は,オブジェクト型(オブジェクトを完全に規定する型),関数型(関数を規定する型),
>及び不完全型(その大きさを確定するのに必要な情報が欠けたもの)に分類する。
> void型の値の集合は空とする。それは,完全にすることのできない不完全型とする。
> void へのポインタは,文字型へのポインタと
> 同じ表現及び同じ境界調整要求をもたなければならない。
voidは不完全型だがvoid*はオブジェクト型でchar*と相互に代入可能だ。
> 6.5.3.4 sizeof 演算子
> sizeof演算子は,関数型若しくは不完全型をもつ式,それらの型の名前を括弧で
> 囲んだもの,又はビットフィールドメンバを指し示す式に対して適用してはならない。
> 型char,unsigned char若しくはsigned char(又はそれらの修飾版)をもつ
> オペランドに適用した場合の結果は,1 とする。
不完全型であるvoidにはsizeofを適用できない。
char派生はサイズ1と明確に規定されているがvoidのサイズは規定がない。
だから(void *)c++が元の値のままでもC99規格違反ではない。
C99規格には「(void *)c++ は1だけインクリメントされる」という規定はない。
C99規格書(ISO/IEC 9899)は英語なのでそれを元にしたJIS X3010で説明する。
X3010は章番号を変えてないのでISO/IEC 9899の該当文章は自分で確認してくれ。
ISO/IEC 9899:TC2
http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1124.pdf
JIS X3010
http://kikakurui.com/x3/X3010-2003-01.html
> 6.2.5 型
> 型は,オブジェクト型(オブジェクトを完全に規定する型),関数型(関数を規定する型),
>及び不完全型(その大きさを確定するのに必要な情報が欠けたもの)に分類する。
> void型の値の集合は空とする。それは,完全にすることのできない不完全型とする。
> void へのポインタは,文字型へのポインタと
> 同じ表現及び同じ境界調整要求をもたなければならない。
voidは不完全型だがvoid*はオブジェクト型でchar*と相互に代入可能だ。
> 6.5.3.4 sizeof 演算子
> sizeof演算子は,関数型若しくは不完全型をもつ式,それらの型の名前を括弧で
> 囲んだもの,又はビットフィールドメンバを指し示す式に対して適用してはならない。
> 型char,unsigned char若しくはsigned char(又はそれらの修飾版)をもつ
> オペランドに適用した場合の結果は,1 とする。
不完全型であるvoidにはsizeofを適用できない。
char派生はサイズ1と明確に規定されているがvoidのサイズは規定がない。
だから(void *)c++が元の値のままでもC99規格違反ではない。
219デフォルトの名無しさん (ドコグロ MM02-gT+F)
2017/05/23(火) 09:33:11.13ID:6xCmSTo3M220デフォルトの名無しさん (ブーイモ MMea-2zar)
2017/05/23(火) 09:47:33.99ID:Mt8tSRb/M >>219
サイズ1ってどこからわかるの?
サイズ1ってどこからわかるの?
221デフォルトの名無しさん (ワッチョイ cb92-UOaC)
2017/05/23(火) 11:13:27.58ID:ufwaINxg0 ウンコQz得意の炎上学習法か
とっとと死ねよ
とっとと死ねよ
222デフォルトの名無しさん (ワッチョイ cb92-UOaC)
2017/05/23(火) 11:24:40.32ID:ufwaINxg0 >>218
ポインタの算術演算なので参照するところが違う
6.5.6-2の定義で加算可能なポインタは「オブジェクトへのポインタ」であり、
void *はキミが引用した6.2.5によりこの条件を満たさない 従ってQzはうんこ 今すぐ死ね
6.5.6 Additive operators
2 For addition, either both operands shall have arithmetic type,
or one operand shall be a pointer to an object type and the other shall have integer type. (Incrementing is equivalent to adding 1.)
ポインタの算術演算なので参照するところが違う
6.5.6-2の定義で加算可能なポインタは「オブジェクトへのポインタ」であり、
void *はキミが引用した6.2.5によりこの条件を満たさない 従ってQzはうんこ 今すぐ死ね
6.5.6 Additive operators
2 For addition, either both operands shall have arithmetic type,
or one operand shall be a pointer to an object type and the other shall have integer type. (Incrementing is equivalent to adding 1.)
223デフォルトの名無しさん (ワッチョイ de1f-bwHs)
2017/05/23(火) 11:31:22.03ID:YiZYoA3+0 規格のどこかにあったはず
224デフォルトの名無しさん (ワッチョイ 1bc8-kvD5)
2017/05/23(火) 11:45:51.13ID:ENsR+rXL0 おいQZ都合悪くなったら自演で叩きかよ
おまえもうム板に向いてないから一人でコードオナニーしてろよ
おまえもうム板に向いてないから一人でコードオナニーしてろよ
227デフォルトの名無しさん (ワッチョイ 03b9-PZTw)
2017/05/23(火) 12:38:56.50ID:fCVURflQ0 配置アドレスのアライメント要求が等しいのと
アドレスの算術演算で同じ結果になるのは別じゃ?
アドレスの算術演算で同じ結果になるのは別じゃ?
228デフォルトの名無しさん (ワッチョイ cb92-UOaC)
2017/05/23(火) 12:50:27.27ID:ufwaINxg0 このバカは
https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Pointer-Arith.html#Pointer-Arith
すら読まずに、C99 からガチでキリッ
とか言ってんのか
死ね死ね死ね今すぐ死ね
https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Pointer-Arith.html#Pointer-Arith
すら読まずに、C99 からガチでキリッ
とか言ってんのか
死ね死ね死ね今すぐ死ね
229デフォルトの名無しさん (ワッチョイ 03b9-PZTw)
2017/05/23(火) 12:57:12.80ID:fCVURflQ0 ideone の C99 でも(同じwarninngで)文句言ってるな
https://ideone.com/fDNXlH
https://ideone.com/fDNXlH
230デフォルトの名無しさん (ワッチョイ 07cd-d60Q)
2017/05/23(火) 13:03:46.65ID:BTD2Lf690231デフォルトの名無しさん (ワッチョイ b33c-7Hrf)
2017/05/23(火) 15:16:25.17ID:Eouhg5rk0 gccでも-pedanticオプションを使えばgcc拡張を警告するぞ
-std=c99オプションに頼るな
gcc-8の警告文
warning: wrong type argument to increment [-Wpointer-arith]
clang-5の警告文
warning: arithmetic on a pointer to void is a GNU extension [-Wpointer-arith]
-std=c99オプションに頼るな
gcc-8の警告文
warning: wrong type argument to increment [-Wpointer-arith]
clang-5の警告文
warning: arithmetic on a pointer to void is a GNU extension [-Wpointer-arith]
232デフォルトの名無しさん (ワッチョイ 1bc8-kvD5)
2017/05/23(火) 17:10:14.54ID:ENsR+rXL0 QZ怒りの暴走
233デフォルトの名無しさん (アウアウカー Sacb-W7a5)
2017/05/23(火) 17:50:06.75ID:YSxby3lha >>225
char型へのポインタ型のオブジェクトとvoid型へのポインタ型のオブジェクトが同じ境界調整を持つという規格が
なぜchar型のオブジェクトとvoid型のオブジェクトが同じサイズという話になるの?
char型へのポインタ型のオブジェクトとvoid型へのポインタ型のオブジェクトが同じ境界調整を持つという規格が
なぜchar型のオブジェクトとvoid型のオブジェクトが同じサイズという話になるの?
234デフォルトの名無しさん (ワッチョイ 1b35-mR0Q)
2017/05/23(火) 18:08:28.42ID:F0rvxaiH0235デフォルトの名無しさん (アウアウカー Sacb-W7a5)
2017/05/23(火) 18:17:27.01ID:YSxby3lha236デフォルトの名無しさん (アウアウカー Sacb-W7a5)
2017/05/23(火) 18:22:45.88ID:YSxby3lha237デフォルトの名無しさん (ワッチョイ cb92-UOaC)
2017/05/23(火) 18:32:25.29ID:ufwaINxg0238デフォルトの名無しさん (ワッチョイ 1b35-mR0Q)
2017/05/23(火) 18:40:44.02ID:F0rvxaiH0 >>235
該当部分を読むと
JIS 6.2.5
>void へのポインタは,文字型へのポインタと同じ表現及び同じ境界調整要求をもたなければならない ( 39 ) 。
>同様に,適合する型へのポインタ同士の場合,修飾版であるか又は非修飾版であるか(const とかのことby QZ) にかかわらず,
>同じ表現及び同じ境界調整要求をもたなければならない。
>構造体型へのポインタは,すべて同じ表現及び 同じ境界調整要求をもたなければならない。
>共用体型へのポインタは,すべて同じ表現及び同じ境界調整 要求をもたなければならない。
>これ以外の型へのポインタは,同じ表現又は同じ境界調整要求をもつ必要はない。
これを読んで感じるのは、つまりポインタ自身の表現やアラインメントを、いろいろ細分化する実装を思いつかない
far とか near とかでもなさそうだ。
細分化するとすればむしろポインタが指す先に関することではないだろうか?
>>236
え?-Wall って全部だすんじゃなかったんですかね。たぶん勘違いしていると思う。
該当部分を読むと
JIS 6.2.5
>void へのポインタは,文字型へのポインタと同じ表現及び同じ境界調整要求をもたなければならない ( 39 ) 。
>同様に,適合する型へのポインタ同士の場合,修飾版であるか又は非修飾版であるか(const とかのことby QZ) にかかわらず,
>同じ表現及び同じ境界調整要求をもたなければならない。
>構造体型へのポインタは,すべて同じ表現及び 同じ境界調整要求をもたなければならない。
>共用体型へのポインタは,すべて同じ表現及び同じ境界調整 要求をもたなければならない。
>これ以外の型へのポインタは,同じ表現又は同じ境界調整要求をもつ必要はない。
これを読んで感じるのは、つまりポインタ自身の表現やアラインメントを、いろいろ細分化する実装を思いつかない
far とか near とかでもなさそうだ。
細分化するとすればむしろポインタが指す先に関することではないだろうか?
>>236
え?-Wall って全部だすんじゃなかったんですかね。たぶん勘違いしていると思う。
239デフォルトの名無しさん (ワッチョイ cac8-amUu)
2017/05/23(火) 18:40:46.39ID:wffizmnr0 汎用ポインタのインクリメントは、
エラーが出るか1進むかだろう。
エラーが出るか1進むかだろう。
240デフォルトの名無しさん (ワッチョイ 9e28-Yh7p)
2017/05/23(火) 18:41:11.96ID:7CxjD8/v0 >>235
境界調整が同じでもサイズの違うオブジェクトへのポインタはあるだろ
char *a, (*b)[2];
K&R C では char* でよかった用途に、
なぜ、わざわざ void* を持ち込んだのか考えてみれ
サイズが 1 なのが気持ち悪くて、
サイズが不明ということにするためだろうが
この期に及んで void* が指す先のサイズが 1 とか言い出す
どスカタンがもしいたら死刑でいい話だぞ
境界調整が同じでもサイズの違うオブジェクトへのポインタはあるだろ
char *a, (*b)[2];
K&R C では char* でよかった用途に、
なぜ、わざわざ void* を持ち込んだのか考えてみれ
サイズが 1 なのが気持ち悪くて、
サイズが不明ということにするためだろうが
この期に及んで void* が指す先のサイズが 1 とか言い出す
どスカタンがもしいたら死刑でいい話だぞ
241デフォルトの名無しさん (アウアウカー Sacb-W7a5)
2017/05/23(火) 18:46:38.37ID:YSxby3lha242デフォルトの名無しさん (ワッチョイ 1b35-mR0Q)
2017/05/23(火) 18:53:09.03ID:F0rvxaiH0244デフォルトの名無しさん (ワッチョイ ffdf-S7GU)
2017/05/23(火) 18:57:52.22ID:07biNjOo0 >>242
何言ってんの?
何言ってんの?
245デフォルトの名無しさん (ワッチョイ 9e28-Yh7p)
2017/05/23(火) 19:00:42.38ID:7CxjD8/v0 >>244
void *memmove(void *dst, const void *src, unsigned n);
void *memcpy(void *dst, const void *src, unsigned n);
にて char * ではなく void * になっている理由はなにか?
void *memmove(void *dst, const void *src, unsigned n);
void *memcpy(void *dst, const void *src, unsigned n);
にて char * ではなく void * になっている理由はなにか?
247デフォルトの名無しさん (ワッチョイ cb92-UOaC)
2017/05/23(火) 19:09:35.34ID:ufwaINxg0 >>240
いや第一目的は、全ての型へのポインタと互換(キャストなしで変換できる)なポインタが欲しかったのだ
いや第一目的は、全ての型へのポインタと互換(キャストなしで変換できる)なポインタが欲しかったのだ
248デフォルトの名無しさん (ワッチョイ ffdf-S7GU)
2017/05/23(火) 19:17:52.52ID:07biNjOo0 >>246
汎用なのになんでstring.hかと思ったことはある
汎用なのになんでstring.hかと思ったことはある
249デフォルトの名無しさん (ワッチョイ afcd-cm4/)
2017/05/23(火) 19:31:53.76ID:ZdN5y2SH0 >>238
Wallは全ての警告が有効になるわけではない
https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Warning-Options.html#index-Wall
> これを読んで感じるのは、つまりポインタ自身の表現やアラインメントを、いろいろ細分化する実装を思いつかない
> far とか near とかでもなさそうだ。
> 細分化するとすればむしろポインタが指す先に関することではないだろうか?
思いつかないなら、同じにすれば良いだけでしょ
そこからなぜ「同じ表現」はポインタの話なのに、「同じ境界調整要求」はポインタの先のオブジェクトの話になるの?
>構造体型へのポインタは,すべて同じ表現及び 同じ境界調整要求をもたなければならない。
>共用体型へのポインタは,すべて同じ表現及び同じ境界調整 要求をもたなければならない。
構造体/共用体型のオブジェクトが等しい境界調整要求を持つほうが非現実的でしょ
Wallは全ての警告が有効になるわけではない
https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Warning-Options.html#index-Wall
> これを読んで感じるのは、つまりポインタ自身の表現やアラインメントを、いろいろ細分化する実装を思いつかない
> far とか near とかでもなさそうだ。
> 細分化するとすればむしろポインタが指す先に関することではないだろうか?
思いつかないなら、同じにすれば良いだけでしょ
そこからなぜ「同じ表現」はポインタの話なのに、「同じ境界調整要求」はポインタの先のオブジェクトの話になるの?
>構造体型へのポインタは,すべて同じ表現及び 同じ境界調整要求をもたなければならない。
>共用体型へのポインタは,すべて同じ表現及び同じ境界調整 要求をもたなければならない。
構造体/共用体型のオブジェクトが等しい境界調整要求を持つほうが非現実的でしょ
250デフォルトの名無しさん (ワッチョイ 9e28-Yh7p)
2017/05/23(火) 22:10:38.61ID:7CxjD8/v0251デフォルトの名無しさん (ワッチョイ 9e28-Yh7p)
2017/05/23(火) 22:57:03.61ID:7CxjD8/v0 >>246
バス幅が8bitでないハードでもったいないことしないためだろ
バス幅が8bitでないハードでもったいないことしないためだろ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★3 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「クマはなるべく山に返す努力を」「クマと戦争は間違っている」動物保護活動家の主張 棲み分けと学習放獣でクマ被害なくなるのか?★7 [ぐれ★]
- とらせん IPあり
- 巨専】
- こいせん 全レス転載禁止
- 【DAZN】ワールドカップ欧州予選総合 ★5
- 侍ジャパンシリーズ2025「日本vs韓国」その12
- 【J SPORTS】FIFA U-17ワールドカップ ★10
- 「世の中、バカが多くて疲れません?」👉1991年日本人大発狂 [543236886]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 自閉症が「んなっしょい」と連呼するお🏡
- 寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い寒い
- マクラーレン、女性ドライバー3名を加入 [462275543]
- 【悲報】大分市佐賀関の火事、20軒→170軒に延焼🔥 [481941988]
