!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C17
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C23 最新ドラフト
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.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言語なら俺に聞け 160
https://mevius.5ch.net/test/read.cgi/tech/1672191630/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 161
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0f63-sFbk)
2023/04/21(金) 14:05:20.18ID:rqj2HSDF02デフォルトの名無しさん (ワッチョイ a702-em59)
2023/04/21(金) 16:20:56.29ID:cgpIrgwq0 >>1
大儀である
大儀である
3デフォルトの名無しさん (ワッチョイ 87da-S3w6)
2023/04/21(金) 16:21:57.14ID:5coQdqNr0 久々に麻呂のクソースを見たいでおじゃるか?
4デフォルトの名無しさん (ワッチョイ 87da-S3w6)
2023/04/21(金) 22:04:31.33ID:euEROcVR0 久々に来たけど、C言語はもう人気が無いんかね・・・
5デフォルトの名無しさん (ワッチョイ 5fad-soEM)
2023/04/21(金) 22:53:09.84ID:kZ6jl2XB0 人気って
C言語で作れなんて非効率的なことする人はそういないのでは?
C言語じゃないとダメな環境を除いて
C言語で作れなんて非効率的なことする人はそういないのでは?
C言語じゃないとダメな環境を除いて
6はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5f3e-S3w6)
2023/04/21(金) 23:38:19.84ID:Ro9IllZr0 各分野に適したものがあるならそれを使うに越したことは無い。
C が本当に「適している」と言える分野ってそんなに広くないじゃろ……。
どういう言語が適しているのかよくわからんかちょうどよい言語なければ長い物にまかれることになるわけだけど、
様々な分野でそれぞれのよりよい言語が生まれて「長い物」の価値が薄れるならそれは喜ばしいことだと思う。
C が本当に「適している」と言える分野ってそんなに広くないじゃろ……。
どういう言語が適しているのかよくわからんかちょうどよい言語なければ長い物にまかれることになるわけだけど、
様々な分野でそれぞれのよりよい言語が生まれて「長い物」の価値が薄れるならそれは喜ばしいことだと思う。
7デフォルトの名無しさん (ワッチョイ 6dda-ASru)
2023/04/22(土) 00:24:12.00ID:PKFQM5A+0 プログラムをする人が、コンピュータの基本的な知識が無いまましてしまうから
簡単な記述で出来る言語が登場したからかね?
単純に同じ演算を繰り返して比較すると、C言語は処理速度が一番速いとのこと
データを処理するには適しているかと
簡単な記述で出来る言語が登場したからかね?
単純に同じ演算を繰り返して比較すると、C言語は処理速度が一番速いとのこと
データを処理するには適しているかと
8デフォルトの名無しさん (ワッチョイ 6663-RykB)
2023/04/22(土) 01:13:10.92ID:pp00Xtk80 FFTやらせたら、どの言語が一番速いだろうか
9デフォルトの名無しさん (テテンテンテン MM3e-HodF)
2023/04/22(土) 01:14:00.87ID:BwPMbYSuM Cの知識はC++をする時に当然必要になる
CはTIOBE言語ランキングで2位で、C++は4位だ
逆に使えない奴はモグリだろw
CはTIOBE言語ランキングで2位で、C++は4位だ
逆に使えない奴はモグリだろw
10デフォルトの名無しさん (ワッチョイ 7502-PEO9)
2023/04/22(土) 03:04:47.05ID:WcjcWdD/0 Cを知り、アセンブラを知って、ハードアーキテクチャが分かる
11デフォルトの名無しさん (ワッチョイ 5963-/Rus)
2023/04/22(土) 07:44:16.17ID:rMU69DRU0 ハードの入り口に立つというだけ
Cより遙かに深い世界の
Cより遙かに深い世界の
12デフォルトの名無しさん (ワッチョイ 6663-RykB)
2023/04/22(土) 12:23:54.03ID:pp00Xtk80 それにしても、ネットは広大だわ。
13デフォルトの名無しさん (ワッチョイ 1146-0EuI)
2023/04/22(土) 16:05:32.27ID:QfqbbaWF0 Cの奥地が広いと言うならネットはなお広いではないか。
14デフォルトの名無しさん (ワッチョイ 5963-/Rus)
2023/04/22(土) 16:39:16.87ID:rMU69DRU0 デジタル3年
アナログ5年
高周波10年
なんて言うね
で、おまえらCはどのくらいでおぼえた?
仕事で使えるレベルになるまでに
アナログ5年
高周波10年
なんて言うね
で、おまえらCはどのくらいでおぼえた?
仕事で使えるレベルになるまでに
>>14
高周波は、あの分布定数の立体回路が謎に満ちていましたよね、あれ、どうやって設計するんだろう?
高周波は、あの分布定数の立体回路が謎に満ちていましたよね、あれ、どうやって設計するんだろう?
16デフォルトの名無しさん (ワッチョイ 5d2d-YWDm)
2023/04/22(土) 18:24:03.40ID:RQNj/O5w0 この世にはプログラミング言語はPHPとJavascriptしか無いと思ってるエンジニア()がたくさんいるから
Pythonの存在も知ってるけどあれはオシャレな感じがしないしオタクがやるものだと思ってる
Pythonの存在も知ってるけどあれはオシャレな感じがしないしオタクがやるものだと思ってる
17デフォルトの名無しさん (スッププ Sd0a-kSx0)
2023/04/22(土) 19:05:57.81ID:Ul/bNVNnd >>14
蟹飯の本は事前に読んでたけど、半年かかった
周りが旧帝工学系院卒ばっかだったから勉強したわ
おれ、旧帝数学だったからポインタとか分からんかった
でも、今ではわしの方が崇められる
日々「チャラい関数、マクロで被せろ」を軸に頑張っとる
蟹飯の本は事前に読んでたけど、半年かかった
周りが旧帝工学系院卒ばっかだったから勉強したわ
おれ、旧帝数学だったからポインタとか分からんかった
でも、今ではわしの方が崇められる
日々「チャラい関数、マクロで被せろ」を軸に頑張っとる
18デフォルトの名無しさん (アウウィフ FF21-1cZQ)
2023/04/23(日) 18:42:16.06ID:y593Lq73F PHPはホントごみ
19デフォルトの名無しさん (ワッチョイ aa97-+JPf)
2023/04/24(月) 12:59:52.39ID:6nEVjUPW0 親を殺されたのか
かわいそうに
かわいそうに
20デフォルトの名無しさん (スププ Sd0a-hOeP)
2023/04/24(月) 14:15:55.03ID:U9n/COjud21デフォルトの名無しさん (オイコラミネオ MMb1-U1Ip)
2023/04/24(月) 18:03:05.84ID:IXNCOIDlM int (func) (int n)
みたいに関数に()付けるのって何の意味(機能)ですか?
みたいに関数に()付けるのって何の意味(機能)ですか?
22デフォルトの名無しさん (スプッッ Sd6d-LN7w)
2023/04/24(月) 18:08:06.16ID:MExTF0xDd 関数ポインタ
23デフォルトの名無しさん (ワッチョイ 5963-/Rus)
2023/04/24(月) 20:21:25.09ID:TGYcq0jn0 違う! 関数そのもの
#define func(x) (func)(x)
マクロではない「本物の」funcを呼び出すのに使う
#define func(x) (func)(x)
マクロではない「本物の」funcを呼び出すのに使う
24デフォルトの名無しさん (ワッチョイ c55f-ASru)
2023/04/24(月) 21:25:50.42ID:4M8+MweU0 int (func) (int n) となると宣言の文脈だからそれも違うだろう。
>>21 その記述だけでは a*b+c を (a*b)+c と書いたのと同じで、少なくともその括弧自体には何の効果もない。
何か意味があると思うなら書いた人に聞くしかない。
>>21 その記述だけでは a*b+c を (a*b)+c と書いたのと同じで、少なくともその括弧自体には何の効果もない。
何か意味があると思うなら書いた人に聞くしかない。
25デフォルトの名無しさん (オイコラミネオ MMb1-U1Ip)
2023/04/24(月) 21:43:56.47ID:IXNCOIDlM いやまあ愚痴なんだけど教科書や入門書ってなんでか知らんけど関数ポインタもったいつけて教えたがらないよね…
26デフォルトの名無しさん (ワッチョイ 7502-kSx0)
2023/04/24(月) 23:20:26.15ID:MovxHIrx0 素人さんには関数ポインタはむずいだろ
関数のポインタをベクトル化してジャンプテーブル代わりになるんもん
つまりスイッチケースが要らない、言う事
関数のポインタをベクトル化してジャンプテーブル代わりになるんもん
つまりスイッチケースが要らない、言う事
27デフォルトの名無しさん (ワッチョイ 6663-RykB)
2023/04/24(月) 23:23:14.11ID:CIhFKz1G0 ジャンプテーブル使うのと、switch case と、
どちらが高速でしょうね?
どちらが高速でしょうね?
28デフォルトの名無しさん (テテンテンテン MM3e-HodF)
2023/04/24(月) 23:32:25.83ID:RQPVcVj5M >>23
それが上手く行くのは、マクロが再帰呼び出しされないような処理が入ってるからだろ
それが上手く行くのは、マクロが再帰呼び出しされないような処理が入ってるからだろ
29デフォルトの名無しさん (テテンテンテン MM3e-HodF)
2023/04/24(月) 23:45:11.28ID:RQPVcVj5M ジャンプテーブルを使うと、変数の引き渡しに手間が掛かる
構造体のポインタを渡すとか、引数を沢山渡すとかグローバル変数を使うとか
なので、switch文にして最適化でテーブルジャンプになるのを確認するのがベストかなと
構造体のポインタを渡すとか、引数を沢山渡すとかグローバル変数を使うとか
なので、switch文にして最適化でテーブルジャンプになるのを確認するのがベストかなと
30デフォルトの名無しさん (スプッッ Sdea-8Xzj)
2023/04/25(火) 08:47:58.80ID:2JpsSRmdd gcc拡張機能のラベルのジャンプテーブルが速かった思い出
あれは規格に取り込むべきだと思う
あれは規格に取り込むべきだと思う
31デフォルトの名無しさん (ワッチョイ 5e5f-RykB)
2023/04/25(火) 10:23:58.24ID:dvdIAVRA0 それってどんなのだっけか
関数を配列にぶっこんだの?
関数を配列にぶっこんだの?
32デフォルトの名無しさん (ワッチョイ 5963-/Rus)
2023/04/25(火) 10:35:38.43ID:VJ90Sqw80 FORTRANの算術GOTOみたいなもんかな
33デフォルトの名無しさん (ワッチョイ 5963-/Rus)
2023/04/25(火) 10:36:32.19ID:VJ90Sqw80 switch caseを最適化させるとジャンプテーブルになっていることはよくあるね
34デフォルトの名無しさん (ワッチョイ 11c9-+rDk)
2023/04/25(火) 11:21:54.95ID:RcvlMMml0 開発環境の都合で C言語しか選択できず
C++ の virtual に相当する機構をなんとか捏造しようと
構造体に関数のポインタをメンバに持つ
あと qsort のまねっこ
(具体的な比較は外に丸投げして そういう関数がある前提でコードを書く
C++ の virtual に相当する機構をなんとか捏造しようと
構造体に関数のポインタをメンバに持つ
あと qsort のまねっこ
(具体的な比較は外に丸投げして そういう関数がある前提でコードを書く
35デフォルトの名無しさん (スフッ Sd0a-8Xzj)
2023/04/25(火) 11:33:32.92ID:Y1VsObgtd36デフォルトの名無しさん (ワッチョイ c55f-ASru)
2023/04/25(火) 12:02:12.18ID:zIgvDwJV0 >>28 (func)(x) に対して関数型マクロ func(x) の展開は起こらないよ。
37デフォルトの名無しさん (ワッチョイ 5963-/Rus)
2023/04/25(火) 12:24:03.71ID:VJ90Sqw80 調べてみた
Computed gotoってやつね
int main(void)
{
void *table[] = { &&L1, &&L2 };
goto *table[1];
L1: ;
L2: ;
}
Computed gotoってやつね
int main(void)
{
void *table[] = { &&L1, &&L2 };
goto *table[1];
L1: ;
L2: ;
}
38デフォルトの名無しさん (ワッチョイ 5963-/Rus)
2023/04/25(火) 12:27:03.54ID:VJ90Sqw8039デフォルトの名無しさん (スップ Sdea-kSx0)
2023/04/25(火) 12:52:44.87ID:HIwqDhB5d お、そんなん出来るんか
40デフォルトの名無しさん (スプッッ Sdea-i/u1)
2023/04/25(火) 14:07:55.49ID:xfobd0gld 話の流れからして
#define func(arg) hoge(arg)
みたいな関数形式マクロがいた場合、
単に void func(int a){} と書くと void hoge(int a){}に置換されて死ぬ。
回避策で void (func)(int a){} としとけば展開されないよ
ってことじゃないの?
#define func(arg) hoge(arg)
みたいな関数形式マクロがいた場合、
単に void func(int a){} と書くと void hoge(int a){}に置換されて死ぬ。
回避策で void (func)(int a){} としとけば展開されないよ
ってことじゃないの?
41デフォルトの名無しさん (ワッチョイ c55f-ASru)
2023/04/25(火) 14:18:02.95ID:zIgvDwJV0 確かに、そういう効果はあるね。
それが必要になる状況は思い浮かばないけども。
それが必要になる状況は思い浮かばないけども。
42デフォルトの名無しさん (スップ Sd0a-cnX/)
2023/04/25(火) 18:35:24.79ID:uZ/SnCfyd 関数と同名のマクロがわざわざ定義されてるとしたらなんか事情がありそうだが
#undef func
したほうが早くね
#undef func
したほうが早くね
43デフォルトの名無しさん (ワッチョイ 7d01-+rDk)
2023/04/25(火) 18:49:03.51ID:xUlKX7o40 #undef の後に undef する前へリカバーできるようにする機構ってコンパイラの環境依存だよね
(リカバーのための仕込み)
#undef func
:
void func()
{
}
:
undefのリカバー (以下 func はマクロ側)
:
(リカバーのための仕込み)
#undef func
:
void func()
{
}
:
undefのリカバー (以下 func はマクロ側)
:
44デフォルトの名無しさん (スップ Sd0a-cnX/)
2023/04/25(火) 19:09:41.44ID:uZ/SnCfyd ひょっとして>>21って
void qsort(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
みたいな書き方のこと?
この場合はカッコなし int *compar(const void *, const void *)
だとintへのポインタを返す関数の実体ということになり
引数宣言内に関数の実体を書くなと言われてしまうだろう
void qsort(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
みたいな書き方のこと?
この場合はカッコなし int *compar(const void *, const void *)
だとintへのポインタを返す関数の実体ということになり
引数宣言内に関数の実体を書くなと言われてしまうだろう
45デフォルトの名無しさん (オイコラミネオ MMb1-U1Ip)
2023/04/25(火) 21:38:43.47ID:ZKj27A06M46デフォルトの名無しさん (オイコラミネオ MMb1-U1Ip)
2023/04/25(火) 21:43:41.07ID:ZKj27A06M47デフォルトの名無しさん (ワッチョイ 66cf-/HYv)
2023/04/25(火) 22:14:03.47ID:OJFKrU7J0 要は関数ポインタ知らなくてバカにされただけのおじさんか
const voidだもんな
const voidだもんな
48デフォルトの名無しさん (ワッチョイ 5963-/Rus)
2023/04/25(火) 22:18:12.16ID:VJ90Sqw80 アホすぎて笑う価値もないな
49デフォルトの名無しさん (スップ Sd0a-cnX/)
2023/04/25(火) 22:25:14.13ID:T6e/oFBcd50デフォルトの名無しさん (スップ Sd0a-cnX/)
2023/04/25(火) 22:37:41.81ID:T6e/oFBcd ああ、それで「関数」ではなく「関数へのポインタ」が定義できるのか
関数の型をtypedefしてからやったほうがわかりやすくない?
WindowsAPIでは大体そんな形になってるから真似してるけど
宣言
typedef int COMP_FUNC(const void *, const void *);
COMP_FUNC comp_A;
COMP_FUNC comp_B;
COMP_FUNC *comp_func = comp_A;
切り替える時
comp_func = comp_B;
呼び出す時
comp_func(...);
関数の型をtypedefしてからやったほうがわかりやすくない?
WindowsAPIでは大体そんな形になってるから真似してるけど
宣言
typedef int COMP_FUNC(const void *, const void *);
COMP_FUNC comp_A;
COMP_FUNC comp_B;
COMP_FUNC *comp_func = comp_A;
切り替える時
comp_func = comp_B;
呼び出す時
comp_func(...);
51デフォルトの名無しさん (ワッチョイ 66cf-/HYv)
2023/04/25(火) 22:50:45.68ID:OJFKrU7J0 typedefがめっちゃ気持ち悪い宣言だな
普通はアスタリスクつけてポインタとしてtypedefするもんだと思うよ
sizeof(COMP_FUNC)がいくつになるのか見当がつかない不気味なオブジェクトだ
普通はアスタリスクつけてポインタとしてtypedefするもんだと思うよ
sizeof(COMP_FUNC)がいくつになるのか見当がつかない不気味なオブジェクトだ
52はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2a3e-ASru)
2023/04/25(火) 23:29:28.69ID:ug7UW9j70 sizeof は関数型の式に対して適用してはならないと制約されているから
関数だったときの結果は未定義で、常識的に考えればコンパイラはエラー扱いにするべきだと思うんだけど
gcc や clang だと何故かエラーにならず 1 を返すんだよな。
(警告は出るけど。)
検出が難しいはずもない (実際に警告は出せてるわけだし) のになんでこうなってんだろ。
1 でなんか便利なことある?
関数だったときの結果は未定義で、常識的に考えればコンパイラはエラー扱いにするべきだと思うんだけど
gcc や clang だと何故かエラーにならず 1 を返すんだよな。
(警告は出るけど。)
検出が難しいはずもない (実際に警告は出せてるわけだし) のになんでこうなってんだろ。
1 でなんか便利なことある?
53デフォルトの名無しさん (ワッチョイ c55f-uFYM)
2023/04/26(水) 02:32:17.99ID:2SSTMM1B0 まあ、入門書は比較的難しいことを書かないほうが売れそうだけどな
でもそれを勿体つけるというのは違うかと
でもそれを勿体つけるというのは違うかと
54デフォルトの名無しさん (ワッチョイ eaad-WJN6)
2023/04/26(水) 03:51:37.33ID:5gh45PFo0 >>50
WINAPIの書き方はこうじゃない?
typedef int (WINAPI *COMP_FUNC)(const void *, const void *);
int WINAPI comp_A(const void *, const void *);
COMP_FUNC comp_func = comp_A;
WINAPIの書き方はこうじゃない?
typedef int (WINAPI *COMP_FUNC)(const void *, const void *);
int WINAPI comp_A(const void *, const void *);
COMP_FUNC comp_func = comp_A;
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 [ぐれ★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★3 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 中国高官と話す外務省局長の表情、やばい ★2 [175344491]
- 偏差値35大臣「すぐに経済的威圧するところへの依存はリスク」 [834922174]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【朗報】高市、中国からの日本行き空路49万件キャンセルを達成🤩オーバーツーリズム対策の手腕が光る [359965264]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 小野田経済安保相「すぐに経済的威圧するところへの依存はリスク」😲 [861717324]
