探検


C言語なら俺に聞け 164

2025/07/23(水) 15:30:01.81ID:eCR5cXRr0
(新スレ立ての際上記コマンドを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言語なら俺に聞け 163
https://mevius.5ch.net/test/read.cgi/tech/1721137434/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2026/08/20(木) 00:06:05.34ID:yH1eBXMA0
>>765
なんかまずいことあるんですか?
https://wandbox.org/permlink/Yr1oe28UFqBSu0hh
2026/08/20(木) 00:42:56.77ID:CPgDHYkC0
#ifdefの類いを使わないでやってみて
2026/08/20(木) 01:04:18.42ID:yH1eBXMA0
> #ifdefの類いを使わないでやってみて

こうですか?
https://wandbox.org/permlink/EskOFaZWlK4yeyFe
2026/08/20(木) 09:27:10.45ID:m8+NKV8o0
普通はヘッダファイルにゃ変数宣言書かないやろ
2026/08/20(木) 09:46:05.97ID:dCI5hbwT0
> 普通はヘッダファイルにゃ変数宣言書かないやろ

じゃあこうかな
https://wandbox.org/permlink/rWNB2Zsj6Kft3dfP
2026/08/20(木) 10:22:40.44ID:zD9pzxQG0
変数を直接には公開しない (適当な関数を通じてのみアクセスする) のでヘッダに書くことはないという意味じゃないの?
2026/08/20(木) 10:28:03.86ID:kgpI2cAu0
>>770
構ってちゃん死ね
2026/08/20(木) 10:28:55.17ID:m8+NKV8o0
グローバル変数は限定的に使おうね
2026/08/20(木) 11:12:16.07ID:BHkIwETw0
>>770
>>762を書いた者ですが、コード内容を調べ、書き方次第で多重定義エラーにはならない事が分かりました。誤情報を書いてしまい失礼しました

C言語では「int c;」と書いた場合は外部変数定義のように見えて実は仮定義という扱い、「int c = 0;」と書いた場合が定義扱いなのですね、、、
仮定義には、定義があればそれを参照できるように機能し(関数宣言に近い動作ですね)、定義がなければ仮定義をもって具象化行う働きがあるのですね

一方C++はODRの厳格化を進めたことによりルールが変わっているようで、私はそれと混同していました
775デフォルトの名無しさん (ワッチョイ 3b1d-lvmO)
垢版 |
2026/08/20(木) 21:10:42.59ID:kgpI2cAu0
>>774
お前も混乱を増長させるな
コンパイラのバージョンを確認してみろ、ゆとりZがよくやる手口だ
776デフォルトの名無しさん (ワッチョイ 7b11-5409)
垢版 |
2026/08/20(木) 21:43:00.84ID:i6ZZ94rn0
$ gcc --version
bash: gcc: command not found
2026/08/21(金) 00:13:07.48ID:Al7ii6Hx0
> コンパイラのバージョンを確認してみろ、ゆとりZがよくやる手口だ

gccのバージョンを新しくしろと言ってるのかな?
https://wandbox.org/permlink/lSFKJiRf1Yr0CX0Y
2026/08/21(金) 07:26:26.19ID:CECVtSfB0
>>775
私の言葉ではかえって混乱を生むかもしれませんのでソースを貼っておきます

https://ja.cppreference.com/c/language/extern

検索には「C言語 Tentative definitions」等も有効です。
C89の頃から存在する挙動、C99で明文化されたようです。
2026/08/21(金) 09:48:24.48ID:uvkfqT3C0
変数と関数で、宣言、定義のルールなんか変わるかな?
2026/08/21(金) 11:43:11.89ID:AhdeXR/60
つい最近に仮定義の話題をどこかで見た覚えがあると思って記憶をたどると Qiita に記事があった。
https://qiita.com/TETSURO1999/items/649b033975583750ad20

C と C++ は世間で思われているよりも多くの非互換をかかえていて、表面上の構文が同じにもかかわらず挙動が違うなんてのは割とある。
C++ に慣れていると C の inline の挙動にびっくりしたりする。
2026/08/22(土) 14:24:52.63ID:0spK21pd0
非互換と言うより別物と捉えた方が良いと思う
2026/08/22(土) 14:55:18.96ID:WaWOHyUHp
でもC++のコンパイラでCもコンパイルできちゃうからなぁ
2026/08/22(土) 17:26:28.71ID:wRPI5YNT0
C と C++ がそれぞれ独立した規格なのは確かなんだけど離れすぎないように配慮はしているんだよ。
配慮した上でこれ。
まあ C の変なところを C++ でもやれとは言えないし、 C はその性質から保守的なのも仕方なくはある。
2026/08/22(土) 18:24:32.93ID:vSvQUPjx0
VC++でC++ソースをコンパイルしたらエラー出て、なんでかなぁと思ったら拡張子が.cだった初心者時代・・・。
2026/08/22(土) 19:23:46.18ID:KuP4v0RE0
C の宣言の文法があまりにひどいので C++ で変えるべきかどうか迷ったという話が D&E に載ってる。
結果的には C を踏襲することにしたけど、変える決断をしていたらかなり大きくプログラミング言語史が違っていたかもしれないな。
2026/08/22(土) 19:38:53.23ID:0spK21pd0
C++の良いところは
取り込んでいっても良いと思います。
オプションで良いです。
2026/08/22(土) 19:57:16.05ID:AkkA9mWX0
>>786
今のgccは互換を保つためのオプショナルのようですね。
-fno-common が規定値
-fcommon は>>777のように指定が必要
788デフォルトの名無しさん (ワッチョイ 6240-orZZ)
垢版 |
2026/08/24(月) 14:10:32.52ID:FITgzI9F0
>>780
>C++ に慣れていると C の inline の挙動にびっくり
ほんそれ
2026/08/24(月) 23:37:56.91ID:8mRZRlF20
なれようず
790デフォルトの名無しさん (ワッチョイ be02-zKTv)
垢版 |
2026/08/29(土) 08:03:26.01ID:zX5LHgzm0
C標準も見た目だけC++に寄せてくるしなー
2026/09/01(火) 00:14:06.47ID:IXFRdCkda
秋来ぬと
目にはさやかに
見えねども
風の音にぞ
おどろかれNULLポ
2026/09/01(火) 01:08:57.37ID:Sd0IuuhS0
そよぐとも目には見えねど白露の宿れる草に秋は来にガッ
793デフォルトの名無しさん (ワッチョイ c5d6-m9W0)
垢版 |
2026/09/11(金) 21:38:32.92ID:m9pRTv5n0
C言語の内容とは関係ないんだけど、古い入門書の「まえがき」に、
「言語とは、筆者が言っていることを理解し、読者が筆者の言わんとすることを理解しようとすれば、その役割を果たす。」
みたいな事を書いていた書籍のタイトルと著者がわかる人おる?
2026/09/11(金) 22:03:45.31ID:IoXK5YWS0
お探しの書籍は、林晴比古(はやし はるひこ)氏による著作『C言語入門』(ソフトバンククリエイティブ/ソフトバンク出版)シリーズである可能性が極めて高いです。
林晴比古氏のプログラミング入門書(『C言語入門』や『BASIC入門』など)の「まえがき」には、プログラミング言語の本質をコミュニケーション(意思伝達)になぞらえた印象的な記述があり、以下のような趣旨の文言が記されています。
「言語とは、話者が言いたいことを表現し、聞く側(読者)がその言わんとすることを理解しようとすれば、それで十分にその役割を果たすものである。」
(※プログラミング言語も同様に、文法に捉われすぎず『コンピュータに何をさせたいか』という意図を伝えることが本質である、という文脈で語られています)

該当する可能性が高い書籍
書籍名: 『明解 C言語 入門編』または『新・C言語入門 シリーズ』(旧・『C言語入門』)
著者: 林 晴比古(はやし はるひこ)
出版社: ソフトバンク(SoftBank Creative)

著者の特徴と文脈
林晴比古氏は1980年代〜1990年代にかけて数多くのC言語やPascal、BASICなどの入門書を執筆されたPC黎明期のベストセラー著者です。
同氏の入門書の「まえがき」や「はじめに」では、次のような哲学が繰り返し語られていました。
単なる文法チェックや構文暗記に囚われないこと
「人間とコンピュータ(あるいは筆者と読者)」の間で意図や論理が正しく伝わることこそが「言語」の本質であること
もし昔読まれたC言語の緑色や青色の表紙の入門書(ソフトバンク刊)であれば、林晴比古氏の書籍で間違いありません。一度表紙や著者名に見覚えがないか確認してみてください。
795デフォルトの名無しさん (ワッチョイ ae14-D25p)
垢版 |
2026/09/11(金) 22:41:11.64ID:rSkwma7r0
AIの答えか
つまりAIは書籍を学習してると
2026/09/11(金) 23:50:37.30ID:q5rznS1p0
林晴比古とか三田典玄とか昔の評判悪かった著者懐かしいな
2026/09/12(土) 00:01:12.34ID:HdkTZBU30
でも、売れてたんだよね
2026/09/12(土) 01:17:59.21ID:F+EEMdMo0
評判悪かったのか。自分はC++入門向けの訳書で一度つまずいて、数年後に比古にゃん本を読了できたことで救われたよ
799デフォルトの名無しさん (アウアウウー Sacd-Up1B)
垢版 |
2026/09/12(土) 01:30:18.34ID:L4vVY98Na
林はるひこはポインタの説明も構造体の説明も下手だよ
800デフォルトの名無しさん (ワッチョイ 6273-tvwl)
垢版 |
2026/09/12(土) 02:45:29.48ID:y/h40Xo50
か○い本よりマシw
2026/09/12(土) 04:33:22.77ID:9SPP8Y7R0
三田典玄の『入門C言語』は間違いが多すぎて改定版が出てたゾw
2026/09/12(土) 05:26:08.75ID:LKzRn6n0M
典玄はCマガジンだったかの連載で頓珍漢な主張カマしてて嫌いだったなぁw
803デフォルトの名無しさん (アウアウウー Sacd-vz9T)
垢版 |
2026/09/12(土) 05:43:10.19ID:/vT1yaWZa
こどもでお金なかったから
学校のパソコンでLSI C試食版のマニュアル読んで学んだ
あとでUNIXカーネルの設計読んだらいろいろつながって感動したな
804デフォルトの名無しさん (JP 0Hdf-6w3j)
垢版 |
2026/09/27(日) 08:40:47.40ID:kDXIIKaKH
>>803
こういう今井翔太みたいな人って今後スキル伸びるだろうな。苦労して学んだ経験、アハ体験って他の何よりも中毒性高いし
2026/09/27(日) 09:53:10.92ID:fIYToHQ00
苦労して学ぶ行為が報われる
そんな時代が続くと良いんだが
806デフォルトの名無しさん (ワッチョイ 37d6-GEdn)
垢版 |
2026/09/27(日) 10:05:30.10ID:R3X/dHdE0
>>803が優秀な AIを開発為遂げ、後にその AIによって淘汰されるのを見るのは忍びない
2026/09/27(日) 10:14:53.08ID:HOfPu1YS0
昔は図書館の本を読んで紙にプログラムを書くとか普通だったし、そういう遊びだった。
子供がやることなんだから将来のために苦労する意思があったわけがない。
むしろ苦労を感じるてるようだと伸びしろに期待できないと思う。 楽しくやろう。
2026/09/27(日) 11:51:47.82ID:w4dOecjt0
され方にもよるが、自分が開発したAIに淘汰されるなら本望なところもあるんじゃないか
地球爆破作戦って映画でそういうことを考えさせられるシーンがあったな
2026/09/27(日) 13:27:45.79ID:vAW48sh00
少なくともC言語プログラマーにAI開発者は居ないんじゃね?
810デフォルトの名無しさん (ワッチョイ 7fd9-0TSE)
垢版 |
2026/09/27(日) 14:32:30.86ID:fXha6t2O0
俺はAI(LLM)開発はFortranだな
cudaとの相性もcより良いし
811デフォルトの名無しさん (ワッチョイ 7fd9-0TSE)
垢版 |
2026/09/27(日) 14:34:51.92ID:fXha6t2O0
cはcudaや並行/並列命令を指示するときディレクティブがめっちゃ面倒くさい
2026/09/29(火) 14:03:07.23ID:kSRX5O5T0
>>796
林氏、人気無かったんだ。よく見掛けたのは印象記憶ってだけか。
最近、氏の『明快入門コンパイラ・インタプリタ開発』ってのをやっと読み終わって、C系インタプリタの実装で入り組んだ再帰呼出しとかしてて『うん、俺には無理!』とか素直に思わせてくれる内容だった。
単純に、自作ゲームに簡単なスクリプト乗せたかっただけなんだけどね。
2026/09/29(火) 21:04:40.17ID:Ol6TF+Ac0
YoutubeでC言語はケン・トンプソンの発明だみたいなことを言ってる動画があった
Cの前身のB言語はトンプソンの仕事だけどCはデニス・リッチーの仕事なんだけどね
Cにトンプソンの思想が混じってるのは事実だけど誰が作ったかという話でトンプソンになるのはおかしい
2026/09/30(水) 10:05:01.83ID:X3g26Jyq0
論外の本は単に読まれないので評判を聞く機会はない。
林晴比古の本は定番の本と言えるくらいに人気があったけど定番の中では定番として紹介するのを躊躇うくらいの出来だなぁというくらいのポジション
……というのが私の理解だけど読んだことは無いので実態がどんなものなのかは知らない。
2026/09/30(水) 10:17:38.54ID:f3Qv5atr0
林は私的体験の範囲で本を書いている
エッセイくらいの気持ちで読めば良い
816デフォルトの名無しさん (スップ Sdbf-mbqL)
垢版 |
2026/09/30(水) 10:53:33.77ID:MvRWC8GUd
>>813
ケントンプソンと2人で開発したみたいのはよく見るな
なんでああなっちゃうんだろうな
この板でも何回か見たことある気がするし
レスを投稿する


ニューススポーツなんでも実況