!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
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/
※前スレ
C言語なら俺に聞け 155
https://mevius.5ch.net/test/read.cgi/tech/1589120427/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 156
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9bb7-/QqT)
2020/09/28(月) 14:41:30.00ID:QxfbhGyV0245デフォルトの名無しさん (ワッチョイ adda-bRPx)
2020/11/08(日) 16:57:10.35ID:qvYN+WNM0 今も昔もゲーム機の開発なんかはクロス環境だろ
ターゲット上で直接コンパイラ走らせているとは思えないのだが
ターゲット上で直接コンパイラ走らせているとは思えないのだが
246デフォルトの名無しさん (ワッチョイ b163-7Ce/)
2020/11/08(日) 17:19:43.81ID:fW7gwItS0 任天堂から高価な開発機を借りるか買うかしてやるんじゃなかった?
247はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ee3e-L1wp)
2020/11/08(日) 17:30:03.29ID:jznHieWa0 >>245
いやいや、ランタイムの保証が小さければ工夫がいることにはかわらんやろ。
いやいや、ランタイムの保証が小さければ工夫がいることにはかわらんやろ。
248デフォルトの名無しさん (ワッチョイ 9eb6-t1Nk)
2020/11/09(月) 06:33:25.75ID:ntGr9Bxw0 「Cが使える」=「Cコンパイラを実行できる」と思ってしまうやつって
BASIC出身なんだろうな
BASIC出身なんだろうな
249デフォルトの名無しさん (スププ Sdb2-dhhq)
2020/11/09(月) 07:43:11.08ID:RNMdHR5xd そりゃコンパイル後のバイナリは言語とは関係ないから「ある言語が使える」はそのプラットフォーム上でコンパイラなりインタプリタが動くことを意味するやろ
250デフォルトの名無しさん (ワッチョイ 9eb6-t1Nk)
2020/11/09(月) 08:25:46.31ID:ntGr9Bxw0 ドヤるようなことかよw
251デフォルトの名無しさん (ラクッペペ MM96-SeBg)
2020/11/09(月) 09:08:37.31ID:xqW72pM4M252デフォルトの名無しさん (ワッチョイ b1d2-t1Nk)
2020/11/09(月) 11:06:53.99ID:msclAy3m0 FCの開発機は1千万円でメガドラ、PCエンジンは250万円という記事を昔みかけた。
そういやぁバッ活に「子育てごっこ」とかいうFC開発キットの広告出てたっけ。
そういやぁバッ活に「子育てごっこ」とかいうFC開発キットの広告出てたっけ。
253デフォルトの名無しさん (ワッチョイ 9eb6-t1Nk)
2020/11/09(月) 11:56:33.56ID:ntGr9Bxw0 あの頃のカスタムLSIは衝撃だったね
255デフォルトの名無しさん (ワッチョイ 9eb6-t1Nk)
2020/11/09(月) 12:11:03.31ID:ntGr9Bxw0 ( ゚∀゚) アハハハハノヽノヽノ \ / \ / \
256デフォルトの名無しさん (ワッチョイ 9202-wqoK)
2020/11/09(月) 13:23:50.49ID:YVG+/FyZ0 もう諦めた
パンツはく
パンツはく
257デフォルトの名無しさん (ワンミングク MMa3-pjKh)
2020/11/13(金) 12:27:52.99ID:uyiuIcZiM goto 使うなと保健所や医者がうるさいの何なの。
258デフォルトの名無しさん (ワッチョイ dd69-PeJZ)
2020/11/13(金) 12:47:00.05ID:6BGA2vQ70 多重に囲い込まれているところからの脱出すら許さない教条主義
例外を認めるとあれもこれも際限がなくなるのでお役所作業
例外を認めるとあれもこれも際限がなくなるのでお役所作業
259デフォルトの名無しさん (ワッチョイ 9591-SiqM)
2020/11/13(金) 13:29:41.79ID:x2VHR/K20 仕事丸投げで解決
260デフォルトの名無しさん (ワッチョイ cbb6-Y0tO)
2020/11/13(金) 14:08:28.42ID:5HXc1MIP0 クリプトン星人に投げたくせに
クリプトン星人がgoto使うとゴチャゴチャぬかす
勝手な奴ら
クリプトン星人がgoto使うとゴチャゴチャぬかす
勝手な奴ら
261デフォルトの名無しさん (ワッチョイ 9b9a-plKQ)
2020/11/13(金) 20:49:27.65ID:0Q6l6RCm0 gotoは有害であるとみなされると、昔の偉い人が言いました。
262デフォルトの名無しさん (ワッチョイ a501-fAyS)
2020/11/14(土) 14:04:47.82ID:eZvyHs9U0 gotoキャンペーン中止の可能性
264デフォルトの名無しさん (ワンミングク MMa3-pjKh)
2020/11/14(土) 15:29:53.89ID:QvOqIpVLM basic風にgosubキャンペーンではどうだろう。
265デフォルトの名無しさん (ワッチョイ 233d-PeJZ)
2020/11/14(土) 15:46:33.79ID:kNYsw/sP0 gotoトラブル
266デフォルトの名無しさん (ワッチョイ 15d2-WW/G)
2020/11/14(土) 16:57:36.06ID:t12i3dhb0 Go To LOVEる
267デフォルトの名無しさん (ワッチョイ 1563-WW/G)
2020/11/14(土) 17:20:09.80ID:XuOfn3YC0 ここはアニメ板ですね
268デフォルトの名無しさん (ワッチョイ ddda-JlI4)
2020/11/14(土) 18:05:11.28ID:b41n/hcI0 プログラマの大凡半数はオタクだからな(´・ω・`)
269デフォルトの名無しさん (ワッチョイ 9521-maKZ)
2020/11/14(土) 18:16:19.79ID:3sCpnJ2t0 しかし例外トラベルはなんかいやだ。
>>267
アニメならば、2020 年地上波アニメで一番よかったのは a.i.c.o incarnation だったと私は考えています
アニメならば、2020 年地上波アニメで一番よかったのは a.i.c.o incarnation だったと私は考えています
271デフォルトの名無しさん (ワッチョイ 6347-NSHw)
2020/11/14(土) 22:05:45.83ID:XJ24TZhC0 そうか?
TRUEは歌がうまいし
白石晴香の声も好きだけど
設定が科学的なフリしてる割に中途半端だし
ツッコミどころ多くてなんだかなと思いながら観てた
TRUEは歌がうまいし
白石晴香の声も好きだけど
設定が科学的なフリしてる割に中途半端だし
ツッコミどころ多くてなんだかなと思いながら観てた
272デフォルトの名無しさん (ワッチョイ 23e0-Pj7A)
2020/11/15(日) 16:01:45.41ID:ZF6xjL9s0 webサイトぐらいしか作った事無いド素人なのですが
cheatengineのようなツールはどうやって作るのですか?
cheatengineのようなツールはどうやって作るのですか?
273デフォルトの名無しさん (ワッチョイ ed5f-NSHw)
2020/11/15(日) 16:31:52.95ID:U+/Dwi3J0 マルチしちゃったね
274デフォルトの名無しさん (ワッチョイ 1563-WW/G)
2020/11/15(日) 16:46:32.42ID:BV2MAPDR0 許すw
275デフォルトの名無しさん (アウアウウー Sa3b-t9SE)
2020/11/18(水) 02:01:14.39ID:7/2eOuWRa int suti[]={1,2,3};ってやったらsuti[3]は存在しないんだよね?for文で存在しなくなるまで〜ってやりたいんだけどどうすればいい?要素数が変わってもいいようにしたいからi != 3はやりたくないんだよね
276デフォルトの名無しさん (アウアウウー Sa3b-t9SE)
2020/11/18(水) 02:06:30.67ID:7/2eOuWRa277デフォルトの名無しさん (ワッチョイ e7ca-N/60)
2020/11/18(水) 02:16:10.62ID:D7KcGGQQ0 条件式をi<3;ってするのが定番かな。
278デフォルトの名無しさん (ワッチョイ ef63-n9sk)
2020/11/18(水) 02:16:23.70ID:xY74VPsT0 配列名ってメモリー上に付けられたラベルみたいなものだから、
添え字の範囲が想定を逸脱しててもアクセス出来るからな
エラーになるかは別にして
添え字の範囲が想定を逸脱しててもアクセス出来るからな
エラーになるかは別にして
279デフォルトの名無しさん (ワッチョイ ef63-n9sk)
2020/11/18(水) 02:17:27.84ID:xY74VPsT0 わりと真面目にやりたいなら、
#define Numof(n) (sizeof(n) / sizeof(n[0]))
for (i = 0; i < Numof(suti); i++)
#define Numof(n) (sizeof(n) / sizeof(n[0]))
for (i = 0; i < Numof(suti); i++)
280デフォルトの名無しさん (アウアウウー Sa3b-fmSy)
2020/11/18(水) 08:19:22.94ID:xva9VBXaa281デフォルトの名無しさん (ワッチョイ 62a5-Aw6/)
2020/11/18(水) 11:15:05.78ID:2WQ1ruJZ0 宗教的理由でsizeofを使いたくないなら
あとはセンチネルの-1を置くくらいしかない
int suti[]={1,2,3,-1};
……何がコイツの教義のお眼鏡に適うかどうか分からんからこれも否定されるかも知れんな
「存在」に関する用語の用法なら、やっぱり宗教的事案で、
「存在しているかどうかをチェックしたい」となるから宗教的思考が背後に控えていると思われる
配列の個数じゃなくて配列の存在だ
存在してるかどうかに強く拘ってんならやっぱり宗教事案なんだろう
だから理由なんて無いな
宗教的な事由で「要素数はイヤ」なんだろう
あとはセンチネルの-1を置くくらいしかない
int suti[]={1,2,3,-1};
……何がコイツの教義のお眼鏡に適うかどうか分からんからこれも否定されるかも知れんな
「存在」に関する用語の用法なら、やっぱり宗教的事案で、
「存在しているかどうかをチェックしたい」となるから宗教的思考が背後に控えていると思われる
配列の個数じゃなくて配列の存在だ
存在してるかどうかに強く拘ってんならやっぱり宗教事案なんだろう
だから理由なんて無いな
宗教的な事由で「要素数はイヤ」なんだろう
282デフォルトの名無しさん (ワッチョイ efd2-n9sk)
2020/11/18(水) 11:49:11.86ID:kf1ewZiT0 BASIC時代の 文字数+文字データ 構造思い出した。
283はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b63e-b6az)
2020/11/18(水) 12:01:00.59ID:0x2GmUxc0 >>275-276
こういうトリックが使えなくもない
#include <stdio.h>
int main(void) {
int suti[]={1,2,3};
for(int *p=suti; p< *(&suti+1); ++p) printf("%d \n", *p);
return 0;
}
こういうトリックが使えなくもない
#include <stdio.h>
int main(void) {
int suti[]={1,2,3};
for(int *p=suti; p< *(&suti+1); ++p) printf("%d \n", *p);
return 0;
}
284デフォルトの名無しさん (ワッチョイ 62a5-Aw6/)
2020/11/18(水) 12:09:28.92ID:2WQ1ruJZ0 【更新あり】PC-9801のプログラム(ソースコード無し)をリバースエンジニアリングしてくれ!→変態技術の塊なことが判明しました - Togetter
ttps://togetter.com/li/1185437
これによるとBASICはかなり先見性があるらしいが
ttps://togetter.com/li/1185437
これによるとBASICはかなり先見性があるらしいが
285デフォルトの名無しさん (ブーイモ MM3e-cKwM)
2020/11/18(水) 12:59:08.65ID:8knHjFQ7M >>281
それ、センチネルやのうて、ただの終端マークや
それ、センチネルやのうて、ただの終端マークや
286デフォルトの名無しさん (ワッチョイ efd2-n9sk)
2020/11/18(水) 15:03:37.53ID:kf1ewZiT0 BASIC自体が使い物にならないとは思わないけど、
命令セットが貧弱すぎてマシン語と組み合わせないと高度なことができなかった。
命令セットが貧弱すぎてマシン語と組み合わせないと高度なことができなかった。
287デフォルトの名無しさん (ワッチョイ c6b6-b6az)
2020/11/18(水) 16:20:02.97ID:2ppIm+8A0 言語自体で作れる機能がないのはCだってそうだ
BASICでそれをやると遅いからマシン語の出番があったってこと
USRやEXECじゃなく新コマンドを作ろうとすると結局BASICインタプリタのサブルーチンをJSRしまくることになる
BASICでそれをやると遅いからマシン語の出番があったってこと
USRやEXECじゃなく新コマンドを作ろうとすると結局BASICインタプリタのサブルーチンをJSRしまくることになる
288デフォルトの名無しさん (ワッチョイ ef63-n9sk)
2020/11/18(水) 17:09:25.17ID:xY74VPsT0 BASICにはCALLと言う無敵の・・・いやなんでもない
289デフォルトの名無しさん (ワッチョイ af21-Gthl)
2020/11/18(水) 20:16:59.09ID:2DtKbiiK0 >>275
c++みたいな範囲for文ってCの構文に入らんのかの?
int suti[]={1,2,3};
for(int x: suti) do_some(x);
みたいなやつ。使いどころが極めて限定されるから意味ないかのう。
あとは変態マクロをコネコネするしか思いつかん。
c++みたいな範囲for文ってCの構文に入らんのかの?
int suti[]={1,2,3};
for(int x: suti) do_some(x);
みたいなやつ。使いどころが極めて限定されるから意味ないかのう。
あとは変態マクロをコネコネするしか思いつかん。
290デフォルトの名無しさん (ワッチョイ c6b6-b6az)
2020/11/18(水) 20:22:04.53ID:2ppIm+8A0 原理主義的な美意識ならC++いくしかねえだろ
Cは実を取るポリシーだかんあ
Cは実を取るポリシーだかんあ
291はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b63e-b6az)
2020/11/18(水) 23:10:46.92ID:0x2GmUxc0 >>282
C/C++ の世界でも BSTR というものがあってな……。
C/C++ の世界でも BSTR というものがあってな……。
292デフォルトの名無しさん (US 0Hc7-0ni4)
2020/11/19(木) 01:25:26.46ID:k2ADczLrH MacにもPSTRというのがあったなあ。パスカル由来だっけ。
確か紅蓮華の人のような名前のコンピュータが...
確か紅蓮華の人のような名前のコンピュータが...
293デフォルトの名無しさん (アウアウウー Sa3b-0jXX)
2020/11/23(月) 22:01:17.13ID:9aSCyeCwa if (a()) {} else if (b()) {}
のとき呼ばれる関数の順は必ずa(), b()の順ですよね?
if (a()) {} else {if (b()) {}}
文法的には↑こういうわけだから間違いないですよね?
のとき呼ばれる関数の順は必ずa(), b()の順ですよね?
if (a()) {} else {if (b()) {}}
文法的には↑こういうわけだから間違いないですよね?
294デフォルトの名無しさん (ワッチョイ 425c-b6az)
2020/11/23(月) 22:52:02.39ID:O1GHu8Kp0 >293
a()の返り値が0以外(True)ならb()は実行されないんじゃないの?
a()の返り値が0以外(True)ならb()は実行されないんじゃないの?
295デフォルトの名無しさん (アウアウウー Sa3b-+icx)
2020/11/24(火) 00:18:54.48ID:JYMaFV+Pa そうじゃないと aで nullチェックからの bみたいのできなくなりそう
296デフォルトの名無しさん (ワッチョイ ef63-n9sk)
2020/11/24(火) 00:25:40.58ID:stGCUtDe0 NULLの時はそのまま後続処理続けるんでしょうか
297デフォルトの名無しさん (アウアウウー Sa3b-+icx)
2020/11/24(火) 00:29:07.26ID:JYMaFV+Pa nullのときは b を通過しないようにするかと
質問の趣旨とちょっと違ったかもしれませんね
ゴメンなさい
質問の趣旨とちょっと違ったかもしれませんね
ゴメンなさい
298デフォルトの名無しさん (アウアウウー Sa3b-+icx)
2020/11/24(火) 00:30:13.18ID:JYMaFV+Pa ダメレスの上書きだな…
重ね重ね申し訳ない
重ね重ね申し訳ない
299デフォルトの名無しさん (ワッチョイ 425c-b6az)
2020/11/24(火) 00:35:37.30ID:PK3X1vMU0 >if (a()) {} else if (b()) {}
書き直して
if ( a()!=0 ) { 処理1 } else if ( b(0)!=0 ) { 処理2 }
a()の返り値がTrue(0以外)ならば 処理1 を実行して次の行へ
a()の返り値がFalse(0)ならば b() を呼び出して、b(0)の返り値が True(0以外)ならば 処理2 を実行。
書き直して
if ( a()!=0 ) { 処理1 } else if ( b(0)!=0 ) { 処理2 }
a()の返り値がTrue(0以外)ならば 処理1 を実行して次の行へ
a()の返り値がFalse(0)ならば b() を呼び出して、b(0)の返り値が True(0以外)ならば 処理2 を実行。
300デフォルトの名無しさん (アウアウカー Sac7-i8bA)
2020/11/24(火) 09:15:59.48ID:ZWk4Vaeta if (stateA) else if (stateB) {} はまだ直感的だけど
if (a() && b()) { ... } で a() が偽の時 b() は実行されない
if (a() || b()) { ... } で a() が真の時 b() は実行されない
のはC言語ならではルールなので注意
if (a() && b()) { ... } で a() が偽の時 b() は実行されない
if (a() || b()) { ... } で a() が真の時 b() は実行されない
のはC言語ならではルールなので注意
301デフォルトの名無しさん (ブーイモ MM13-cKwM)
2020/11/24(火) 09:34:54.23ID:HgpldYdAM >>300
今時のたいがいの言語で同じルールだ。
今時のたいがいの言語で同じルールだ。
302デフォルトの名無しさん (ワッチョイ efd2-n9sk)
2020/11/24(火) 11:48:49.75ID:8CcwCAVK0 デバッガーでトレースするとか
printf()出力で確認するとかしないのかな?
8bit CPUのアセンブラ時代なんてバグでハングして(ry
printf()出力で確認するとかしないのかな?
8bit CPUのアセンブラ時代なんてバグでハングして(ry
303135 (アウアウウー Sa3b-wL2m)
2020/11/24(火) 12:19:31.97ID:TYQ0nicua 実装がそうなっているだけか規格で保証されているかは全く別問題だから, 「やってみたらそうなった」に加えて規格を確認するのは重要
304デフォルトの名無しさん (スップ Sd02-xHFB)
2020/11/24(火) 12:22:00.11ID:vTVthpTQd >>301
そう思ってると痛い目にあう
そう思ってると痛い目にあう
305デフォルトの名無しさん (JP 0H67-cKwM)
2020/11/24(火) 13:36:23.71ID:CAtJf7/qH306デフォルトの名無しさん (ラクッペペ MM8e-krez)
2020/11/24(火) 13:53:18.36ID:g7Dt5dEuM307デフォルトの名無しさん (ワッチョイ ef63-n9sk)
2020/11/24(火) 17:29:31.98ID:stGCUtDe0 そこまで掘り下げなくても、単に if else 使う時の順序と関数呼出の有無
308293 (アウアウウー Sa3b-0jXX)
2020/11/24(火) 17:57:03.44ID:ufG8nYHfa309デフォルトの名無しさん (スップ Sd3f-IKRj)
2020/11/25(水) 17:50:07.30ID:h9isg/D4d310デフォルトの名無しさん (ワッチョイ d763-m/w5)
2020/11/25(水) 17:58:01.33ID:rJINVE9t0 if else 辺りは、そんなに違いは無いと思うが
311デフォルトの名無しさん (ワッチョイ 9701-0Obg)
2020/11/25(水) 19:36:32.00ID:DcZYUINF0 if else 辺りは、PascalとCの違いが分かるところの一つなのな
312デフォルトの名無しさん (ワッチョイ ffb6-P4WK)
2020/11/25(水) 21:51:34.65ID:vhvyuere0 > C言語時代の言語はたいがいの言語でCとは違うルール
日本語でおk
日本語でおk
313デフォルトの名無しさん (ブーイモ MMdb-WfaT)
2020/11/26(木) 01:30:04.21ID:R1TSJRT3M 入れ子になって構文解析に保証回数の記述が必要なC
たぶん大抵は数珠繋ぎになって解析器はお気楽ご気楽シゴトなelseif装備言語
たぶん大抵は数珠繋ぎになって解析器はお気楽ご気楽シゴトなelseif装備言語
314デフォルトの名無しさん (ブーイモ MMdb-E3Cu)
2020/11/26(木) 08:07:50.73ID:EOjdKX+aM 1passでコードが吐けるんじゃない限り
どこかに構文木を蓄積する必要があるんだから
何らかの上限は必ず存在する。
どこかに構文木を蓄積する必要があるんだから
何らかの上限は必ず存在する。
315デフォルトの名無しさん (ワッチョイ 6710-VxgE)
2020/12/09(水) 14:46:15.05ID:lKZrYGPu0 ある構造体があるメンバーを持ってるか持ってないかで場合わけってできるの?
316デフォルトの名無しさん (ワッチョイ 6763-kNbH)
2020/12/09(水) 15:20:51.88ID:dBVX1XEl0 C言語の話で良いのか?
マクロレベルならできるだろうが
実行時は無理だろうな
マクロレベルならできるだろうが
実行時は無理だろうな
317デフォルトの名無しさん (ドコグロ MM9f-hR+t)
2020/12/09(水) 16:23:12.63ID:W1Z3cSFoM >>315
C++のtemplateなら……
C++のtemplateなら……
318デフォルトの名無しさん (ワッチョイ 87da-sAgx)
2020/12/09(水) 23:18:41.68ID:X6ku5mk00 テンプレートを使わないマクロで実現する方法思いつかなかったから調べてみたけど, BOOST_DECLARE_HAS_MEMBERもSFINAEで実装されてた
標準Cの規格の範囲でポータブルな実装は無理そうに思えてきた
標準Cの規格の範囲でポータブルな実装は無理そうに思えてきた
319デフォルトの名無しさん (ワッチョイ 6710-VxgE)
2020/12/10(木) 08:18:36.14ID:yWf2E74j0 C言語にテンプレート機能だけつける方法ないの?
320デフォルトの名無しさん (ワッチョイ 7fb6-orE1)
2020/12/10(木) 08:33:48.40ID:1ebLrqpT0 #include <tgmath.h>みたいの?
321はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-orE1)
2020/12/10(木) 11:36:21.24ID:p57PMoZs0 >>320
学術的な分類はよく知らないけどそれはアドホック多相に分類されるものじゃないの?
テンプレートはパラメトリック多相的なものなので多相を実現するものという意味では近いけど、
使い勝手としてはそんなに近くない。
>>319
「だけ」っていっても C++ のテンプレートは C++ の型システムやなんやかんやと一体のものなので、
テンプレートだけ抜き出して C に入れるみたいなことは出来ないでしょ。
C 独自のテンプレートみたいなのを考えるくらいなら C++ を使えやって話になるだろうし。
>>315
マクロ展開は文法の解釈に先立って実行されるので、
マクロ展開時にプログラムの内容を見て分岐することは出来ない。
構造体を元にして真偽値を生成するような「展開形」を思いつけば実行時に分岐することは
出来るのかもしれないけど思いつかないなぁ。
学術的な分類はよく知らないけどそれはアドホック多相に分類されるものじゃないの?
テンプレートはパラメトリック多相的なものなので多相を実現するものという意味では近いけど、
使い勝手としてはそんなに近くない。
>>319
「だけ」っていっても C++ のテンプレートは C++ の型システムやなんやかんやと一体のものなので、
テンプレートだけ抜き出して C に入れるみたいなことは出来ないでしょ。
C 独自のテンプレートみたいなのを考えるくらいなら C++ を使えやって話になるだろうし。
>>315
マクロ展開は文法の解釈に先立って実行されるので、
マクロ展開時にプログラムの内容を見て分岐することは出来ない。
構造体を元にして真偽値を生成するような「展開形」を思いつけば実行時に分岐することは
出来るのかもしれないけど思いつかないなぁ。
322デフォルトの名無しさん (ワッチョイ 8769-YTVu)
2020/12/10(木) 13:40:39.75ID:Rt1ylxrY0 開発環境の都合で Cしかないので困ってるとすれば
C++ 食って C 吐き出す中間のコンパイラがあればいい ってことに
C++ 食って C 吐き出す中間のコンパイラがあればいい ってことに
323デフォルトの名無しさん (ワッチョイ 6763-kNbH)
2020/12/10(木) 15:08:30.04ID:cFFVV66u0324デフォルトの名無しさん (ワッチョイ bf9a-zfYG)
2020/12/10(木) 20:09:21.68ID:CcbWokCZ0325デフォルトの名無しさん (ドコグロ MM9f-hR+t)
2020/12/10(木) 21:28:27.30ID:hyB2wVsLM >>324
sfinaeがあるので死ぬ代わりにfalseを返す関数みたいなのが作れる
ランタイムでどうこうしたければtype_info -> boolな関数を作ればいいが、型を追加するたびに変更が入ることになってtemplateほどの便利さはない
sfinaeがあるので死ぬ代わりにfalseを返す関数みたいなのが作れる
ランタイムでどうこうしたければtype_info -> boolな関数を作ればいいが、型を追加するたびに変更が入ることになってtemplateほどの便利さはない
326デフォルトの名無しさん (ワッチョイ 7fb6-orE1)
2020/12/11(金) 04:23:01.20ID:p1x0IGcK0 C++をベターCとして使う、でいいんでねい?
327はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-orE1)
2020/12/11(金) 11:11:25.01ID:NpU6prgS0 >>324
(たぶん公式な用語ではないけど) ハードエラーとソフトエラーという区分がある。
テンプレートの展開に失敗してコンパイルの失敗になってしまうハードエラーと、
テンプレートの次の候補を試すソフトエラー。
で、そのソフトエラーを上手いこと利用して分岐するのが SFINAE ってわけ。
C++20 からはコンセプトが入ったのでそれもかなり楽に出来るようになった。
(たぶん公式な用語ではないけど) ハードエラーとソフトエラーという区分がある。
テンプレートの展開に失敗してコンパイルの失敗になってしまうハードエラーと、
テンプレートの次の候補を試すソフトエラー。
で、そのソフトエラーを上手いこと利用して分岐するのが SFINAE ってわけ。
C++20 からはコンセプトが入ったのでそれもかなり楽に出来るようになった。
328デフォルトの名無しさん (ワッチョイ 6791-xqow)
2020/12/11(金) 13:56:53.94ID:VMKMxeJn0 ここはC言語スレではなくC++勧誘スレになったのか
329はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-orE1)
2020/12/11(金) 14:34:30.55ID:NpU6prgS0 無理やりでも C で出来るならいいんだけど、出来ないんだもの……。 しゃーない。
330デフォルトの名無しさん (ワッチョイ 6791-xqow)
2020/12/11(金) 14:45:28.79ID:VMKMxeJn0 〜ならこうやれるって
一種の荒らしだからね
一種の荒らしだからね
331デフォルトの名無しさん (ワッチョイ 7fb6-orE1)
2020/12/11(金) 16:54:58.94ID:p1x0IGcK0 void func();
void func(int);
void func(double);
void func(void*);
auto func(int) -> enable_if_t<false, int>;
みたいな多重定義があるときに
func(1);
と呼び出されたときに、候補1つずつ
呼び出すとしたら何が起きるのかをリストアップして
void func(); //error
void func(int); //exact
void func(double);//conversion
void func(void*);//error
auto func(int) -> enable_if_t<false, void>; //error
そこからerrorになったのを外すってだけだかんな
void func(int);
void func(double);
void func(void*);
auto func(int) -> enable_if_t<false, int>;
みたいな多重定義があるときに
func(1);
と呼び出されたときに、候補1つずつ
呼び出すとしたら何が起きるのかをリストアップして
void func(); //error
void func(int); //exact
void func(double);//conversion
void func(void*);//error
auto func(int) -> enable_if_t<false, void>; //error
そこからerrorになったのを外すってだけだかんな
332デフォルトの名無しさん (ワッチョイ 6763-kNbH)
2020/12/11(金) 17:55:15.27ID:o4C6fSAI0 C言語でどうやって多重定義を実装するのかな?
可変長引数をこねくり回せば出来るかもしれないが
可変長引数をこねくり回せば出来るかもしれないが
333はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-orE1)
2020/12/11(金) 18:02:13.48ID:NpU6prgS0 >>332
C11 から _Generic という機能で型によって自動で呼び分けることは出来る。
C11 から _Generic という機能で型によって自動で呼び分けることは出来る。
334デフォルトの名無しさん (ワッチョイ 6763-kNbH)
2020/12/11(金) 18:20:43.38ID:o4C6fSAI0 新しい機能を使うのではなく、もうちょっと工夫してみて
335デフォルトの名無しさん (ワッチョイ 277f-WScj)
2020/12/11(金) 18:44:44.22ID:7UnfkYH50 何その上から目線
336デフォルトの名無しさん (ワッチョイ 6763-kNbH)
2020/12/11(金) 18:47:44.91ID:o4C6fSAI0 それがC言語の醍醐味
337デフォルトの名無しさん (ワッチョイ 6763-kNbH)
2020/12/11(金) 18:56:25.10ID:o4C6fSAI0 サバイバルナイフ一本でジャングルで暮らしていく位の気概がないとC言語は使えない
338はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf3e-orE1)
2020/12/11(金) 18:56:28.63ID:NpU6prgS0339デフォルトの名無しさん (ワッチョイ 6763-kNbH)
2020/12/11(金) 18:57:16.38ID:o4C6fSAI0 C11スレでも立ててそこでやったら?
340デフォルトの名無しさん (ワッチョイ bf8c-9ESD)
2020/12/11(金) 19:36:39.77ID:Z3aKNSgT0 Cならポインタを積極的に使う。
341デフォルトの名無しさん (ワッチョイ 67e6-HgEh)
2020/12/11(金) 19:42:20.97ID:s+Xx8Zn+0 C11の話題でわざわざ新スレとかこいつ頭おかしいの?w
342デフォルトの名無しさん (ワッチョイ 6763-kNbH)
2020/12/11(金) 19:48:16.88ID:o4C6fSAI0 ならば、このスレの話題は、汎用的なC言語で良いでしょう
新しい規格を話題にしたいなら、それ用のスレを立ててすれば良い
新しい規格を話題にしたいなら、それ用のスレを立ててすれば良い
343デフォルトの名無しさん (ワッチョイ df52-Z7C7)
2020/12/11(金) 19:53:34.25ID:nEgtG7R60 >>342
むしろ古い規格のみを話題にしたいお前が他所に行けば円満解決だろう
むしろ古い規格のみを話題にしたいお前が他所に行けば円満解決だろう
344デフォルトの名無しさん (ワッチョイ 6763-kNbH)
2020/12/11(金) 20:09:21.63ID:o4C6fSAI0 ここは初代のC言語スレ
■ このスレッドは過去ログ倉庫に格納されています
