!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言語なら俺に聞け 162
https://mevius.5ch.net/test/read.cgi/tech/1698653580/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 163
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7bba-Lem2)
2024/07/16(火) 22:43:54.18ID:ZrsCjURC0705はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b132-Ah42)
2025/02/26(水) 11:38:18.47ID:6jOr+W/20 ビットパターンを別の型で読み替える可能性があるなら最初から union で書いておいたほうが人にとっても読みやすいしな。
(C++ では union でも common initial sequence の読み替えしか許しておらず、 C より制約が厳しいので注意。)
(C++ では union でも common initial sequence の読み替えしか許しておらず、 C より制約が厳しいので注意。)
706はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b132-FOV+)
2025/02/26(水) 15:23:36.19ID:6jOr+W/20 >>703
未定義は「規格としては何も要求しない」なので処理系が何らかの追加保証をすることを禁じてない。
未定義は「規格としては何も要求しない」なので処理系が何らかの追加保証をすることを禁じてない。
707デフォルトの名無しさん (ワッチョイ 317b-/OIl)
2025/02/26(水) 15:45:51.57ID:x+jOZkKw0 特定の処理系と心中するつもりでstrict aliasing rulesを守らない奴がいたらすごい馬鹿
709デフォルトの名無しさん (ワッチョイ b691-M1fQ)
2025/02/27(木) 00:09:51.30ID:oCSgSskf0 >>707
移植しないなら別にいいんじゃないの
移植しないなら別にいいんじゃないの
710デフォルトの名無しさん (ワッチョイ 0a20-/OIl)
2025/02/27(木) 08:29:36.37ID:Uw13P3Kf0 >>709
将来の更新の可能性も考慮しないわけね
将来の更新の可能性も考慮しないわけね
711デフォルトの名無しさん (ワッチョイ 0d01-Ah42)
2025/02/27(木) 09:04:57.33ID:smeEQtfp0 だから将来も移植しないんだろ
712デフォルトの名無しさん (ワッチョイ 0a20-/OIl)
2025/02/27(木) 09:23:08.30ID:Uw13P3Kf0 移植と更新は違うぞw
713デフォルトの名無しさん (ブーイモ MMbd-A0+M)
2025/02/27(木) 10:21:51.11ID:6jIPAcTSM そのどうでもいい仮定話いつまでやんの?
714デフォルトの名無しさん (ワッチョイ 6a33-X0JC)
2025/02/27(木) 22:25:43.54ID:rdt/oSxr0 【帰化朝鮮人を論破】
日本は帰化朝鮮系の家系の人間によって隣国の大韓民国と北朝鮮に侵略行為を受けている
彼らがやっていることは「差別」を盾にした日本人を対象にした迫害であり「民族浄化」である
国際法でもこのような行為は決して許されていない
しかし何となく加害者が日本人で、差別されているの朝鮮系と言う意識を刷り込まれて彼らに遠慮してないか?
事実は逆である、加害者は彼らの方で迫害されているのは日本人である、まずこの意識を共有しよう
なぜそうなっているのか? 新聞、出版社、司法、テレビ局、会社の起業家、大学教授などが帰化系の人間で徒党を組み
日本人を差別、排除してまるで日本人であるかのように振舞っているからである
テレビに映り世論を形成している人間が日本人の振りをして韓国、北朝鮮に有利になるように論調を組み、
日本を支配し、日本人が朝鮮人に隷属することを強要している
これが侵略行為以外のなんなのか? なぜ日本人が日本で差別の対象にならなければいけないのか?
帰化系が起業し外部の朝鮮系と通じ合い会社を成功させる、または帰化系が既存の会社組織でトップに居座り
管理職を帰化人系のみで固め、日本人は閑職に追いやられ、パワハラで辞職に追い込まれ
その会社の技術を朝鮮半島に流出させ、日本企業が競争力を失っていく
芸能人、テレビ局員、スポーツ選手(五輪代表、野球、サッカー)、報道関係者は帰化系で独占されている
もはやテレビに映る人間はほとんど日本人ではないと考えろ
では何をするべきか?
もはや野党はほぼ全員、もはや自民党も過半数以上は帰化朝鮮人系の家系の人間が国会議員を占有しつつある
まず「政治家に立候補する時、外国の家系の人間か否かを公表する」を提出して過半の賛成を取って立法化しよう
国際的にもごく一般的で、アメリカでも何系かはすべて明らかにされている
そうなると帰化人の家系の人間に支配されたメディアは差別だと糾弾し始め帰化人たちが暴動やら起こすだろう、
日本は荒廃の一途を辿る、内戦状態に近いものになる
だがそれは当然のこと、国内で隣国の人間による侵略行為、民族浄化行為を受けているのだから
時間はあまりない、やつらが過半数を確保してからでは遅い、韓国北朝鮮に占領されてしまう
日本人よ、まず声を上げるのだ
日本は帰化朝鮮系の家系の人間によって隣国の大韓民国と北朝鮮に侵略行為を受けている
彼らがやっていることは「差別」を盾にした日本人を対象にした迫害であり「民族浄化」である
国際法でもこのような行為は決して許されていない
しかし何となく加害者が日本人で、差別されているの朝鮮系と言う意識を刷り込まれて彼らに遠慮してないか?
事実は逆である、加害者は彼らの方で迫害されているのは日本人である、まずこの意識を共有しよう
なぜそうなっているのか? 新聞、出版社、司法、テレビ局、会社の起業家、大学教授などが帰化系の人間で徒党を組み
日本人を差別、排除してまるで日本人であるかのように振舞っているからである
テレビに映り世論を形成している人間が日本人の振りをして韓国、北朝鮮に有利になるように論調を組み、
日本を支配し、日本人が朝鮮人に隷属することを強要している
これが侵略行為以外のなんなのか? なぜ日本人が日本で差別の対象にならなければいけないのか?
帰化系が起業し外部の朝鮮系と通じ合い会社を成功させる、または帰化系が既存の会社組織でトップに居座り
管理職を帰化人系のみで固め、日本人は閑職に追いやられ、パワハラで辞職に追い込まれ
その会社の技術を朝鮮半島に流出させ、日本企業が競争力を失っていく
芸能人、テレビ局員、スポーツ選手(五輪代表、野球、サッカー)、報道関係者は帰化系で独占されている
もはやテレビに映る人間はほとんど日本人ではないと考えろ
では何をするべきか?
もはや野党はほぼ全員、もはや自民党も過半数以上は帰化朝鮮人系の家系の人間が国会議員を占有しつつある
まず「政治家に立候補する時、外国の家系の人間か否かを公表する」を提出して過半の賛成を取って立法化しよう
国際的にもごく一般的で、アメリカでも何系かはすべて明らかにされている
そうなると帰化人の家系の人間に支配されたメディアは差別だと糾弾し始め帰化人たちが暴動やら起こすだろう、
日本は荒廃の一途を辿る、内戦状態に近いものになる
だがそれは当然のこと、国内で隣国の人間による侵略行為、民族浄化行為を受けているのだから
時間はあまりない、やつらが過半数を確保してからでは遅い、韓国北朝鮮に占領されてしまう
日本人よ、まず声を上げるのだ
715デフォルトの名無しさん (ワッチョイ 76a1-x4eQ)
2025/02/27(木) 22:56:45.28ID:c6/rsZNB0 まず統一を潰さないと
716デフォルトの名無しさん (ワッチョイ 6d07-Ah42)
2025/02/28(金) 00:14:09.12ID:FWjziINm0717はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b132-Ah42)
2025/02/28(金) 10:32:16.41ID:aDguz5rE0 >>705
念のために確認してたら union のメンバを他の型の違うメンバで読み替えて良い規則は JIS (JISX3010:2003) には書いてないっぽい。
欠陥報告で後から修正したから JIS を出した時点では原文にも書いてなかったんだな。
https://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_283.htm
念のために確認してたら union のメンバを他の型の違うメンバで読み替えて良い規則は JIS (JISX3010:2003) には書いてないっぽい。
欠陥報告で後から修正したから JIS を出した時点では原文にも書いてなかったんだな。
https://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_283.htm
718はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c132-ctMQ)
2025/03/11(火) 17:38:04.47ID:GvJGmymX0 C の公式サイトが登場!
https://www.c-language.org/
https://www.c-language.org/
719デフォルトの名無しさん (ワッチョイ dd01-ctMQ)
2025/03/12(水) 20:15:01.01ID:echC0lcV0 AIのおかげでCが主流になるかもな
720デフォルトの名無しさん (ササクッテロル Sp85-ZS5M)
2025/03/12(水) 21:03:53.54ID:pJ5qTyUbp >>719
それは無い
それは無い
721デフォルトの名無しさん (ワッチョイ 794b-XET2)
2025/03/12(水) 21:59:36.42ID:WyQEi83H0 AIコーディングが進化した結果直接機械語で出力できるようになったけど人間が読めないのは困るから最低限人間が読めて速度も出るCで出すのが主流になるみたいな妄想
722デフォルトの名無しさん (ササクッテロル Sp85-ZS5M)
2025/03/12(水) 22:07:09.85ID:/p3tzJNRp AIは何も指定しなきゃjavaやpythonやC#のコードを吐き出すよ
723デフォルトの名無しさん (ワッチョイ 1101-6xWR)
2025/03/18(火) 10:34:05.62ID:mIJI9ibF0 cはむずい定期
724デフォルトの名無しさん (ワッチョイ a1b3-Cuhd)
2025/03/19(水) 20:09:43.41ID:WDKEEomI0 文法的にはポインタ周りが(少し)難しいだけ
個人的にはpythonの方が難しく感じるな
個人的にはpythonの方が難しく感じるな
725はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 215e-a7BF)
2025/03/19(水) 20:44:03.52ID:SWZJHd7L0 C が未定義をエラーとして補足せずに黙って変になることがあるのは入門書などをまともに読まずにいろいろ弄って学ぶタイプの人には向いてないな。
ちゃんとした入門書をちゃんと読むならそんなに難しいわけではない。
しかし難しくないことでもしょうもないミスをするのが人というものだという現実もあって、特に規模が大きくなると C はしんどい。
難易度とかいうのとは別の話として、理解していても間違う。
ちゃんとした入門書をちゃんと読むならそんなに難しいわけではない。
しかし難しくないことでもしょうもないミスをするのが人というものだという現実もあって、特に規模が大きくなると C はしんどい。
難易度とかいうのとは別の話として、理解していても間違う。
726デフォルトの名無しさん (ワッチョイ 13ad-avMV)
2025/03/20(木) 04:57:02.69ID:07u24rkx0 まあしかしこの頃のコンパイラは警告やエラーを沢山出してくれて分り易いよ。
昔のはチェックが緩くて出なかったからな。
その状態から gcc で printf() のフォーマットと引数のチェックが出来ると知った時は衝撃を受けた。
昔のはチェックが緩くて出なかったからな。
その状態から gcc で printf() のフォーマットと引数のチェックが出来ると知った時は衝撃を受けた。
727デフォルトの名無しさん (ワッチョイ 418c-jD59)
2025/03/20(木) 17:01:49.87ID:iinwNT6F0 >>726
それな、オプションさえちゃんと付ければ昔でもできてたよ
それな、オプションさえちゃんと付ければ昔でもできてたよ
728はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2170-a7BF)
2025/03/20(木) 17:31:14.06ID:PqZkwPwR0 GCC では遅くても 2.95.3 には attribute で文字列が書式であることを指定できて型チェックする機能はあった模様。(2001年頃)
https://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_4.html#SEC84
ただな、このスレにいるようなおじさんの言う「昔」は 1980 年頃の話だったりするんよ。
MS-DOS 用とか CP/M 用とかのコンパイラの話なんよ。
https://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_4.html#SEC84
ただな、このスレにいるようなおじさんの言う「昔」は 1980 年頃の話だったりするんよ。
MS-DOS 用とか CP/M 用とかのコンパイラの話なんよ。
729デフォルトの名無しさん (ワッチョイ 71ff-yHWN)
2025/03/20(木) 17:39:11.70ID:Enps6Akh0 その年代の人はおじさんじゃなくておじいさんでは
730デフォルトの名無しさん (ワッチョイ 418c-jD59)
2025/03/20(木) 17:45:05.08ID:iinwNT6F0731デフォルトの名無しさん (ワッチョイ c95f-H5Hv)
2025/03/20(木) 18:23:15.20ID:0dSk8Oyx0 メインフレームにダム端末繋げてた時代じゃよ
732デフォルトの名無しさん (スフッ Sd33-4EpX)
2025/03/20(木) 23:54:14.30ID:t3XlSG3jd gcc7.1から突然エラーメッセージが親切になったのはあるな
ちょうどclang+llvmが話題になった時期でそれに対抗したらしい
ちょうどclang+llvmが話題になった時期でそれに対抗したらしい
733デフォルトの名無しさん (ワッチョイ 13ad-avMV)
2025/03/21(金) 07:44:18.11ID:6cMMiEqo0734デフォルトの名無しさん (ワッチョイ 13ad-avMV)
2025/03/21(金) 07:45:09.98ID:6cMMiEqo0 >>728
そうそう。80年代。
そうそう。80年代。
735デフォルトの名無しさん (ワッチョイ 9bec-91cd)
2025/03/21(金) 08:19:02.26ID:kfFumR870 真理子版が便利すぎた。
736デフォルトの名無しさん (ワッチョイ 992a-15T+)
2025/03/22(土) 13:52:41.80ID:A90b+kK90 他人にも使わせるツールに環境変数「真里子」はキモすぎてビビった
737デフォルトの名無しさん (アウアウエー Sa23-D2PX)
2025/03/22(土) 14:25:25.39ID:U6/Lg1xxa >>728
scanf, sscanf で float, double に %f, %lf のところを %f, %f にしてバグるのがありがち
scanf, sscanf で float, double に %f, %lf のところを %f, %f にしてバグるのがありがち
738627 (ワッチョイ 5377-avMV)
2025/03/22(土) 15:31:32.91ID:7ZrFn0ve0 scanfなんて使ったことねーや
ありがちってほど使ってるんか
ありがちってほど使ってるんか
739デフォルトの名無しさん (ワッチョイ eba1-hjYJ)
2025/03/22(土) 15:40:39.16ID:8J5Eq6PC0 scanfに道に落ちているを食べさせてはいけません
740デフォルトの名無しさん (ワッチョイ 492a-jhJX)
2025/03/28(金) 08:23:03.00ID:+OZuQWBg0 この警告、環境によっては出ないの?
$ cc ld.c -Wall
ld.c: 関数 ‘main’ 内:
ld.c:6:19: 警告: 書式 ‘%d’ は引数の型が ‘int’ であると予期されますが、第 2 引数の型は ‘off_t’ {aka ‘long int’} です [-Wformat=]
6 | return printf("%d", offset);
| ~^ ~~~~~~
| | |
| int off_t {aka long int}
| %ld
$ cat -n ld.c
1 #include <stdio.h>
2 #include <sys/param.h>
3
4 int main() {
5 off_t offset = 1;
6 return printf("%d", offset);
7 }
8
$ cc ld.c -Wall
ld.c: 関数 ‘main’ 内:
ld.c:6:19: 警告: 書式 ‘%d’ は引数の型が ‘int’ であると予期されますが、第 2 引数の型は ‘off_t’ {aka ‘long int’} です [-Wformat=]
6 | return printf("%d", offset);
| ~^ ~~~~~~
| | |
| int off_t {aka long int}
| %ld
$ cat -n ld.c
1 #include <stdio.h>
2 #include <sys/param.h>
3
4 int main() {
5 off_t offset = 1;
6 return printf("%d", offset);
7 }
8
741デフォルトの名無しさん (ブーイモ MM26-xG3a)
2025/03/28(金) 08:29:47.68ID:v2Oxq7uoM おれの作ったCコンパイラはそんな警告出さないけど何か文句ある?
742740 (ワッチョイ 492a-jhJX)
2025/03/28(金) 09:29:48.60ID:+OZuQWBg0 >>741
あー、なるほど。↓よ。
$ cc --version
cc (GCC) 14.2.0
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
あー、なるほど。↓よ。
$ cc --version
cc (GCC) 14.2.0
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
743はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ed32-p0tU)
2025/03/28(金) 11:25:13.48ID:gM96YdDw0 >>740
出さないコンパイラはあるし、その場合に警告を出すコンパイラであっても printf 類を特別扱いしてなんとかしてるので、可変長引数一般では型が合わないときに検出されない。
出さないコンパイラはあるし、その場合に警告を出すコンパイラであっても printf 類を特別扱いしてなんとかしてるので、可変長引数一般では型が合わないときに検出されない。
744740 (ワッチョイ 492a-aKLX)
2025/03/28(金) 13:15:49.58ID:+OZuQWBg0 なるぽろ。%ld に変更せず、放っておくか。ありがとう。
ちなみに、逆に、%ld だと警告する場合も有り得るのだろうか。例えば off_t が非 long の機種があるとか。
ちなみに、逆に、%ld だと警告する場合も有り得るのだろうか。例えば off_t が非 long の機種があるとか。
745はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ed32-p0tU)
2025/03/28(金) 13:32:37.75ID:gM96YdDw0 x86-64 なら System V ABI ではどうせ 64 ビットレジスタで受け渡されるからそこんところでは問題にならないのだが、最適化したときにどうなるかまるで予想がつかない。 放置してよいとは言えない。
いったん intmax_t にキャストするのが正当な方法だと考えられている。
https://www.jpcert.or.jp/sc-rules/c-int15-c.html
いったん intmax_t にキャストするのが正当な方法だと考えられている。
https://www.jpcert.or.jp/sc-rules/c-int15-c.html
746デフォルトの名無しさん (ワッチョイ 6eef-29WZ)
2025/03/28(金) 15:39:13.17ID:Gm0qUC0n0 struct X* x;で自動変数を定義した場合
スタック上のどこかにstruct Xの領域が確保されたりしますか?
スタック上のどこかにstruct Xの領域が確保されたりしますか?
747デフォルトの名無しさん (ブーイモ MM26-xG3a)
2025/03/28(金) 15:47:02.39ID:v2Oxq7uoM されない
748740 (ワッチョイ 492a-mzfN)
2025/03/28(金) 17:27:47.76ID:+OZuQWBg0749デフォルトの名無しさん (ササクッテロラ Spf1-7PGi)
2025/03/28(金) 19:09:11.37ID:Yj8GIx0sp なんだよjって、何の略だ?
750はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ed32-p0tU)
2025/03/28(金) 22:16:42.65ID:gM96YdDw0 >>749
なんらかの単語の略 (頭文字) というわけではないらしいよ。
> j is sort of like "i" for integer
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n833.htm
なんらかの単語の略 (頭文字) というわけではないらしいよ。
> j is sort of like "i" for integer
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n833.htm
μ→uみたいなものか
大文字の I はもう使われてふのかな?
大文字の I はもう使われてふのかな?
752デフォルトの名無しさん (アウアウウー Saa5-WcQO)
2025/03/29(土) 16:07:35.02ID:M3jsTRd4a long long や unsigned long long の出力に %lld や %llu って昔は使えてた気がするが
最近はだめなんかな
%I64 とか %U64 みたいなのになってるん
最近はだめなんかな
%I64 とか %U64 みたいなのになってるん
753はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ed32-p0tU)
2025/03/29(土) 16:54:36.19ID:HRez4USp0754デフォルトの名無しさん (ワッチョイ 2e2a-aKLX)
2025/03/29(土) 17:30:28.12ID:bd7PveSA0755デフォルトの名無しさん (ワッチョイ a92a-K+vz)
2025/04/08(火) 18:05:53.82ID:f9O97Hv70 sudo で実行すると execl が動作しないように見える。なぜ?
$ cat -n e.c
1 #include <stdio.h>
2 #include <unistd.h>
3
4 int main() {
5 pid_t pid;
6 if ((pid = fork()) > 0) return 0;
7 else if (pid < 0) return 1;
8 execl("/bin/bash", "/bin/bash", "-c", "echo $$ $PPID >> /tmp/log", NULL);
9 _exit(2);
10 }
$ gcc -g e.c
$ ./a.out
$ cat /tmp/log
10593 1566
$ sudo ./a.out
$ cat /tmp/log
10593 1566
$
$ cat -n e.c
1 #include <stdio.h>
2 #include <unistd.h>
3
4 int main() {
5 pid_t pid;
6 if ((pid = fork()) > 0) return 0;
7 else if (pid < 0) return 1;
8 execl("/bin/bash", "/bin/bash", "-c", "echo $$ $PPID >> /tmp/log", NULL);
9 _exit(2);
10 }
$ gcc -g e.c
$ ./a.out
$ cat /tmp/log
10593 1566
$ sudo ./a.out
$ cat /tmp/log
10593 1566
$
756627 (ワッチョイ 22ca-VGeA)
2025/04/08(火) 19:31:31.59ID:HmugccjD0 まずコピーするなら手を入れるな手を入れると他も全部疑わなきゃいけなくなる
それからsudo -E ./a.outとsudo strace ./a.outを試せ
それからsudo -E ./a.outとsudo strace ./a.outを試せ
757デフォルトの名無しさん (ワッチョイ 798a-GhsC)
2025/04/08(火) 19:45:35.63ID:dAM9KaxA0 縦の数字はなに?
普通にエラーになるだろそれ
普通にエラーになるだろそれ
758デフォルトの名無しさん (ワッチョイ a9b3-K+vz)
2025/04/08(火) 20:08:58.79ID:0fraKCca0 catの引数に-n指定してるからだろ
759デフォルトの名無しさん (ワッチョイ 4dc4-xzp7)
2025/04/08(火) 20:57:19.94ID:brzdTu7q0 手元にあるfedora で試したが、
sudo ./a.out の結果表示は2行になった
多分、正常に処理できたようだ
sudo ./a.out の結果表示は2行になった
多分、正常に処理できたようだ
あ、次のようにしたときです
sudo ./a.out
/tmp/log に追記されませんでした
sudo ./a.out
/tmp/log に追記されませんでした
762755 (ワッチョイ a92a-ZtHn)
2025/04/08(火) 22:49:40.17ID:Rmhs1Vne0 >>759
えー!? と別環境で実行したら、sudo でも execl が動作したように見える。なにこれ。
$ ./a.out
$ cat /tmp/log
13706 1
$ sudo ./a.out
$ cat /tmp/log
13706 1
13721 1
$
取り敢えず、うちの Ubuntu の「おま環」問題のようでした。お騒がせしました。
ただ、今回のは bash の $PPID が init (1) になるという新たな謎が...
えー!? と別環境で実行したら、sudo でも execl が動作したように見える。なにこれ。
$ ./a.out
$ cat /tmp/log
13706 1
$ sudo ./a.out
$ cat /tmp/log
13706 1
13721 1
$
取り敢えず、うちの Ubuntu の「おま環」問題のようでした。お騒がせしました。
ただ、今回のは bash の $PPID が init (1) になるという新たな謎が...
763はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cd32-xzp7)
2025/04/09(水) 00:22:33.67ID:06ntJanv0 親プロセスが先に死んだら子は init の養子になる。
だけどこの場合だとどちらが先に死ぬかはプロセスのスケジューリング次第で状況によるってことなんじゃないのかな。
Linux の事情はよく知らんけど。
だけどこの場合だとどちらが先に死ぬかはプロセスのスケジューリング次第で状況によるってことなんじゃないのかな。
Linux の事情はよく知らんけど。
764デフォルトの名無しさん (ワッチョイ 4df4-bRAX)
2025/04/09(水) 00:23:29.81ID:Z/QH/Jgt0 Linux 板で聞いた方が回答ありそうな気がする。
765デフォルトの名無しさん (ワッチョイ ae7e-GhsC)
2025/04/09(水) 15:00:16.84ID:cB69i6Vg0 const unsigned char t100_day[3807] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
const unsigned char t100_night[3568] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
String tenki_i = "01";
char*const unsigned char t100_day[3807] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
const unsigned char t100_night[3568] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
String tenki_i = "01";
char* y_icon; // FIXME 型が分からない
if (tenki_i == "01") y_icon = "t100_day";
else if (tenki_i == "01_n") y_icon = "t100_night";
else if (tenki_i == "08") y_icon = "t200_day";
else if (tenki_i == "08_n") y_icon = "t200_night";
else y_icon = "t999_day";
sprite.drawPng((std::uint8_t*)y_icon, sizeof(y_icon), 0, 25);
t100_dayなどは画像なんですけど、tenki_iの中のstrによって画像を変えたいです。
y_iconはどうやって指定したらいいでしょうか?
const unsigned char t100_night[3568] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
String tenki_i = "01";
char*const unsigned char t100_day[3807] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
const unsigned char t100_night[3568] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
String tenki_i = "01";
char* y_icon; // FIXME 型が分からない
if (tenki_i == "01") y_icon = "t100_day";
else if (tenki_i == "01_n") y_icon = "t100_night";
else if (tenki_i == "08") y_icon = "t200_day";
else if (tenki_i == "08_n") y_icon = "t200_night";
else y_icon = "t999_day";
sprite.drawPng((std::uint8_t*)y_icon, sizeof(y_icon), 0, 25);
t100_dayなどは画像なんですけど、tenki_iの中のstrによって画像を変えたいです。
y_iconはどうやって指定したらいいでしょうか?
766デフォルトの名無しさん (ワッチョイ ae7e-GhsC)
2025/04/09(水) 15:01:47.32ID:cB69i6Vg0 >>765
コピペ間違えました
正しくは以下です
char*const unsigned char t100_day[3807] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
const unsigned char t100_night[3568] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
String tenki_i = "01";
char* y_icon; // FIXME 型が分からない
if (tenki_i == "01") y_icon = "t100_day";
else if (tenki_i == "01_n") y_icon = "t100_night";
else if (tenki_i == "08") y_icon = "t200_day";
else if (tenki_i == "08_n") y_icon = "t200_night";
else y_icon = "t999_day";
sprite.drawPng((std::uint8_t*)y_icon, sizeof(y_icon), 0, 25);
t100_dayなどは画像なんですけど、tenki_iの中のstrによって画像を変えたいです。
y_iconはどうやって指定したらいいでしょうか?
コピペ間違えました
正しくは以下です
char*const unsigned char t100_day[3807] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
const unsigned char t100_night[3568] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
String tenki_i = "01";
char* y_icon; // FIXME 型が分からない
if (tenki_i == "01") y_icon = "t100_day";
else if (tenki_i == "01_n") y_icon = "t100_night";
else if (tenki_i == "08") y_icon = "t200_day";
else if (tenki_i == "08_n") y_icon = "t200_night";
else y_icon = "t999_day";
sprite.drawPng((std::uint8_t*)y_icon, sizeof(y_icon), 0, 25);
t100_dayなどは画像なんですけど、tenki_iの中のstrによって画像を変えたいです。
y_iconはどうやって指定したらいいでしょうか?
767デフォルトの名無しさん (スッップ Sd22-yI6P)
2025/04/09(水) 15:16:14.76ID:qDwL9bg0d768デフォルトの名無しさん (ワッチョイ 79f9-GhsC)
2025/04/09(水) 15:24:40.77ID:Hnk7Q6m60 すみません、書き直しました
https://ideone.com/CSy0Nb
t100_dayなどは画像なんですけど、tenki_iの中のstrによって画像を変えたいです。
y_iconはどうやって指定したらいいでしょうか?
https://ideone.com/CSy0Nb
t100_dayなどは画像なんですけど、tenki_iの中のstrによって画像を変えたいです。
y_iconはどうやって指定したらいいでしょうか?
769デフォルトの名無しさん (ワッチョイ 06a6-9hLw)
2025/04/09(水) 15:27:10.13ID:lI8vd/RJ0770はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cd32-xzp7)
2025/04/09(水) 18:01:06.77ID:06ntJanv0771はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cd32-xzp7)
2025/04/09(水) 18:30:26.27ID:06ntJanv0772755 (ワッチョイ 6e2a-ZtHn)
2025/04/09(水) 19:53:07.12ID:dFJfWRF+0 >>769
「お騒がせしました。」と言ったので、勝手ながら質問を終えた気がしていた。見てくれて有り難う。
>>755,762 については、Ubuntu においても sudo で execl は動作していた。
動作しないように見えたのは、Ubuntu 特有のファイル権限設定があり、root といえどもファイルにアペンドできないせいだった。Qiita にあったサマリが解りやすい。
https://qiita.com/skyflare2001/items/1c1934b1d2f405228334#2025118-追記
> Ubuntu の /tmp のユーザファイルに root で追記できない
全く C言語に関係なかった。ごめんちゃい。
「お騒がせしました。」と言ったので、勝手ながら質問を終えた気がしていた。見てくれて有り難う。
>>755,762 については、Ubuntu においても sudo で execl は動作していた。
動作しないように見えたのは、Ubuntu 特有のファイル権限設定があり、root といえどもファイルにアペンドできないせいだった。Qiita にあったサマリが解りやすい。
https://qiita.com/skyflare2001/items/1c1934b1d2f405228334#2025118-追記
> Ubuntu の /tmp のユーザファイルに root で追記できない
全く C言語に関係なかった。ごめんちゃい。
773デフォルトの名無しさん (アウアウウー Sa21-NXaD)
2025/04/20(日) 14:12:51.27ID:RiHDJnuQa stdbool.h 真面目に使ってる人いる?あるいは使ってない方がおかしい?
774はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7932-C6fW)
2025/04/20(日) 16:06:51.19ID:srj6a33k0 原則としては論理型が必要であれば stdbool.h (内で定義される bool) を使うべきだと思う。
論理型が C99 で導入されるより前の古いプログラム中で bool という名前を使っている場合に配慮して論理型の名前を _Bool にした上でその別名の bool を stdbool.h 内で定義するという変な構成になっている。
(もし bool という名前を独自の定義で使っている場合は単に stdbool.h を使わないという選択が可能。)
このような状況から、互換性の問題がなければ論理型は bool という名前にしたかったし、論理型の値は true, false と書きたいという意図が感じられる。
自分が書くプログラム内で名前が衝突するような問題がないのなら意図に乗っかっておくのが無難そうに思われる。
C23 からは bool, true, false がキーワードとして直接にサポートされるようになって stdbool.h は意味を失いただ存在するだけになった。
こういう変更をする以上はこれが C のあるべき新しい姿と考えられてるってことなんだろう。
stdbool.h を使うことで (古い規格でも) 新しい姿を先取りできるわけ。
ただ、 C23 の変更はちょっとだけ互換性を損なう部分があるから注意を要する。
stdboo.h で定義される旧来の true, false は 1, 0 に展開されるマクロで、要するに型で言えば int だった。
C23 からの true, false は bool 型のリテラルという立場を持つ。
これが問題になるケースはそれほどないとは思うけど……。
論理型が C99 で導入されるより前の古いプログラム中で bool という名前を使っている場合に配慮して論理型の名前を _Bool にした上でその別名の bool を stdbool.h 内で定義するという変な構成になっている。
(もし bool という名前を独自の定義で使っている場合は単に stdbool.h を使わないという選択が可能。)
このような状況から、互換性の問題がなければ論理型は bool という名前にしたかったし、論理型の値は true, false と書きたいという意図が感じられる。
自分が書くプログラム内で名前が衝突するような問題がないのなら意図に乗っかっておくのが無難そうに思われる。
C23 からは bool, true, false がキーワードとして直接にサポートされるようになって stdbool.h は意味を失いただ存在するだけになった。
こういう変更をする以上はこれが C のあるべき新しい姿と考えられてるってことなんだろう。
stdbool.h を使うことで (古い規格でも) 新しい姿を先取りできるわけ。
ただ、 C23 の変更はちょっとだけ互換性を損なう部分があるから注意を要する。
stdboo.h で定義される旧来の true, false は 1, 0 に展開されるマクロで、要するに型で言えば int だった。
C23 からの true, false は bool 型のリテラルという立場を持つ。
これが問題になるケースはそれほどないとは思うけど……。
775デフォルトの名無しさん (ワッチョイ a95f-0ulL)
2025/04/20(日) 16:30:31.97ID:VYLrteqj0 bool型だと関数成功はtrueで1
int型だと関数成功で0とか普通
混ぜるな危険
int型だと関数成功で0とか普通
混ぜるな危険
776デフォルトの名無しさん (ワッチョイ 6db1-h0BB)
2025/04/20(日) 17:33:04.38ID:SQJ2+pRN0 戻り値が負数ならエラーってやつが(ry
777デフォルトの名無しさん (ワッチョイ 5e93-M5IX)
2025/04/20(日) 18:02:02.88ID:AC61QJPP0 関数の結果がboolのやつはエラー原因丸めて何が問題かわからないからクソだよな
778デフォルトの名無しさん (ワッチョイ 8a7a-I3kk)
2025/04/20(日) 18:06:56.21ID:sZ1mcHs70 >>773
なんでstdbool.hがあるのかよく分からないってこと?
なんでstdbool.hがあるのかよく分からないってこと?
779はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7932-imSP)
2025/04/20(日) 19:55:37.89ID:srj6a33k0780デフォルトの名無しさん (ワッチョイ f9ee-0INX)
2025/04/20(日) 21:08:15.13ID:0ZeTNaMX0 #define false 1==0
#define true !false
不真面目なんでいつもこれでやってました
#define true !false
不真面目なんでいつもこれでやってました
781デフォルトの名無しさん (ワッチョイ 6db1-h0BB)
2025/04/20(日) 21:22:34.91ID:SQJ2+pRN0 >777
エラー理由が必要なやつは引数に返り値用ポインタ要求する設計になってんじゃね?
エラー理由が必要なやつは引数に返り値用ポインタ要求する設計になってんじゃね?
782デフォルトの名無しさん (アウアウウー Sa21-NXaD)
2025/04/21(月) 02:34:30.39ID:DqUDvQMka >>777
関数の結果の型がboolのやつが-1を返す例もあってな
関数の結果の型がboolのやつが-1を返す例もあってな
783はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 65d3-imSP)
2025/04/21(月) 05:17:15.86ID:jNnWMUsR0784デフォルトの名無しさん (ワッチョイ 6639-nw4i)
2025/04/21(月) 05:35:14.60ID:gJLXVah/0 そういや、boolの実値は処理系依存とはるか昔に習ったようなキモス
785デフォルトの名無しさん (スッップ Sd0a-Rq/v)
2025/04/21(月) 05:47:00.09ID:wZXY8H1ed >>783
FAQを読め
FAQを読め
786はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 65d3-imSP)
2025/04/21(月) 05:54:01.88ID:jNnWMUsR0787デフォルトの名無しさん (ササクッテロリ Spbd-0ulL)
2025/04/21(月) 09:56:56.17ID:i498vk5cp #define TRUE (0==0)
#define FALSE !TRUE
この書き方はまだ世の中がBASICでソフト組んでた頃に見たわ
たぶんそれ以前のどこか別の言語からの輸入なんだとは思うが
かっこいいから好んで使ってる
#define FALSE !TRUE
この書き方はまだ世の中がBASICでソフト組んでた頃に見たわ
たぶんそれ以前のどこか別の言語からの輸入なんだとは思うが
かっこいいから好んで使ってる
788デフォルトの名無しさん (ワッチョイ 6582-0ulL)
2025/04/21(月) 09:58:55.59ID:JjvQDxsX0 まあ、まだtrueが0以外って仕様だった頃に、より処理系に沿った正確な値が欲しかったんだ
789はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7932-C6fW)
2025/04/21(月) 11:43:45.70ID:++xqwTI40 >>788
PDP-11 時代の C のリファレンスマニュアルを見つけることが出来た。
https://web.archive.org/web/20250121035636/https://www.bell-labs.com/usr/dmr/www/cman.ps
1975 年頃のもので、このときすでに比較演算子や等価演算子は 1 か 0 を返すことになっている。
たぶん最初からそうだったと思う。
C の基礎になった B の時点で既にこのような仕様なので。
ただ、全ての処理系が完璧に同じ仕様に沿っていたわけでもないだろうし、当時の事情の中で有用なテクニックだった可能性はあるかもしれない。
PDP-11 時代の C のリファレンスマニュアルを見つけることが出来た。
https://web.archive.org/web/20250121035636/https://www.bell-labs.com/usr/dmr/www/cman.ps
1975 年頃のもので、このときすでに比較演算子や等価演算子は 1 か 0 を返すことになっている。
たぶん最初からそうだったと思う。
C の基礎になった B の時点で既にこのような仕様なので。
ただ、全ての処理系が完璧に同じ仕様に沿っていたわけでもないだろうし、当時の事情の中で有用なテクニックだった可能性はあるかもしれない。
790デフォルトの名無しさん (ワッチョイ 9e02-4o74)
2025/04/21(月) 12:00:52.53ID:QKqUxhO90 いまでも「0は偽」という仕様しか謳われてないように見えるがどうだろう
むしろ「偽は0」という仕様が消えているようにも思えるが、どうだったっけ
むしろ「偽は0」という仕様が消えているようにも思えるが、どうだったっけ
791はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7932-imSP)
2025/04/21(月) 12:43:19.49ID:++xqwTI40 >>790
_Bool は整数型 (標準符号無し整数型) に分類されている。
整数型は他の整数型に変換したときに変換後の型で表せる範囲であるなら同じ値になるルールなので _Bool 型の 0 は 0 だよ。
_Bool は整数型 (標準符号無し整数型) に分類されている。
整数型は他の整数型に変換したときに変換後の型で表せる範囲であるなら同じ値になるルールなので _Bool 型の 0 は 0 だよ。
792デフォルトの名無しさん (ワッチョイ f9ac-0INX)
2025/04/21(月) 12:51:37.31ID:NLKNLeTR0 関数の戻り値だと、
0は正常終了、非0は異常終了
というのが多かったと思う
0は正常終了、非0は異常終了
というのが多かったと思う
論理型のある言語でも
If b = True Then
なんて書かれるとモゾモゾしてしまう
If b = True Then
なんて書かれるとモゾモゾしてしまう
794デフォルトの名無しさん (ワッチョイ 6610-VXNn)
2025/04/21(月) 13:36:06.07ID:0RekbFS70 false=0,true=1に決めたとしても、いにしえのboolがint型な影響で行儀の悪い関数から2とか-999999999を返せてしまって
1以外のtrueで意図しない分岐になる恐れがあるから、ifの条件は0か非0かで判断しましょうというバッドノウハウ的なルールになったようだ
1以外のtrueで意図しない分岐になる恐れがあるから、ifの条件は0か非0かで判断しましょうというバッドノウハウ的なルールになったようだ
795デフォルトの名無しさん (ワッチョイ 6610-VXNn)
2025/04/21(月) 13:51:07.27ID:0RekbFS70 BOOLの定義にさらに混乱に拍車をかけたのがWindowsAPIのGetMessage()で、戻り値の型をBOOLとしておきながら
実際には0、0以外、-1を返すというBOOLの概念が揺らぐような凶悪な仕様でif文に対し疑心暗鬼になったプログラマーが発生した
https://learn.microsoft.com/ja-jp/windows/win32/api/winuser/nf-winuser-getmessage
実際には0、0以外、-1を返すというBOOLの概念が揺らぐような凶悪な仕様でif文に対し疑心暗鬼になったプログラマーが発生した
https://learn.microsoft.com/ja-jp/windows/win32/api/winuser/nf-winuser-getmessage
796デフォルトの名無しさん (ワッチョイ 971f-3+vo)
2025/04/28(月) 20:12:17.56ID:LzrB3b/O0 初心者です
vcのCL.EXEにパスを通したいのですがどれに通せばいいかわかりません。
86フォルダと64フォルダにそれぞれさらにフォルダが二つあって合計で4つCL。EXEが4っつあります。
86と64は32ビットと64ビットの違いかと思うのですが、64のフォルダにも二つあるのでわかりません
vcのCL.EXEにパスを通したいのですがどれに通せばいいかわかりません。
86フォルダと64フォルダにそれぞれさらにフォルダが二つあって合計で4つCL。EXEが4っつあります。
86と64は32ビットと64ビットの違いかと思うのですが、64のフォルダにも二つあるのでわかりません
797デフォルトの名無しさん (ワッチョイ 971f-3+vo)
2025/04/28(月) 20:13:33.98ID:LzrB3b/O0798はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b732-jewZ)
2025/04/28(月) 20:19:59.93ID:clGXfLYj0 >>796
vcvarsall.bat にパラメータを渡して実行するか各アーキテクチャ向けバッチファイルを実行することで必要な環境変数の設定がされる仕組みになっている。
https://learn.microsoft.com/ja-jp/cpp/build/building-on-the-command-line?view=msvc-170
これらのバッチファイルを経由せずに直接環境を設定するのはやめたほうが良い。
バッチファイルの具体的な内容は各環境によって (インストール時の条件などによってかな?) 違うので他環境でインストールしたバッチファイルを持ってくるなと注意書きがある。
vcvarsall.bat にパラメータを渡して実行するか各アーキテクチャ向けバッチファイルを実行することで必要な環境変数の設定がされる仕組みになっている。
https://learn.microsoft.com/ja-jp/cpp/build/building-on-the-command-line?view=msvc-170
これらのバッチファイルを経由せずに直接環境を設定するのはやめたほうが良い。
バッチファイルの具体的な内容は各環境によって (インストール時の条件などによってかな?) 違うので他環境でインストールしたバッチファイルを持ってくるなと注意書きがある。
799デフォルトの名無しさん (ワッチョイ 971f-3+vo)
2025/04/28(月) 20:39:54.03ID:LzrB3b/O0800はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b732-Dk0z)
2025/04/28(月) 20:54:09.97ID:clGXfLYj0 >>799
私自身は今は使ってないからあまり把握してないのだけれど、普通にインストールしたらそのバッチファイルがスタートアップメニューに登録されなかったっけ?
私自身は今は使ってないからあまり把握してないのだけれど、普通にインストールしたらそのバッチファイルがスタートアップメニューに登録されなかったっけ?
801デフォルトの名無しさん (ワッチョイ 9ff5-ogCD)
2025/04/28(月) 21:29:48.61ID:es1rmYMQ0802デフォルトの名無しさん (ワッチョイ ff8a-VpId)
2025/04/28(月) 21:32:36.04ID:PCWkr5M/0 自分でPATHを通してみろ。っていう実習だとしたら。
たとえば、Hostx64の中のx86は、x64上でclを実行して、出てくるバイナリはx86用ってこと
「そうやって覚える」のもアリだが、vcvarsall を使いこなすこともぜひ覚えよう
たとえば、Hostx64の中のx86は、x64上でclを実行して、出てくるバイナリはx86用ってこと
「そうやって覚える」のもアリだが、vcvarsall を使いこなすこともぜひ覚えよう
803デフォルトの名無しさん (ワッチョイ 5701-8SS3)
2025/04/28(月) 21:45:04.99ID:x+drcUbt0 パスだけ通しても環境変数設定しないとincludeファイルが見つからないとか色々言われそう
804デフォルトの名無しさん (ワッチョイ 97f6-3+vo)
2025/04/28(月) 22:03:09.10ID:ALNkeUhz0 cl.exeの質問したものです
あらためてインストールしたらスタートメニューにコマンドプロンプトがでてきました。
以前使っていたやつと同じのなのでcl.exeが実行できます。
みなさん親切にありがとうございました!!
あらためてインストールしたらスタートメニューにコマンドプロンプトがでてきました。
以前使っていたやつと同じのなのでcl.exeが実行できます。
みなさん親切にありがとうございました!!
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★4 [BFU★]
- 小野田氏、”中国経済への依存“に警戒感 高市首相の国会答弁巡り [煮卵★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で [ぐれ★]
- 日本が「世界で最も魅力的な国」1位に!✨「魅力的な都市」では東京が2位 「魅力的な地域」は北海道が7位に [煮卵★]
- 台湾声明 「台湾は独立した主権国家、中国は台湾を統治したことがなく、中国は口出しする権利ない」 中国が高市首相に抗議で ★7 [お断り★]
- 【サッカー】独占入手 最年長JリーガーにW不倫疑惑 『お風呂覗きたいんですが笑』LINE流出も… 慰謝料トラブルを本人に直撃 [冬月記者★]
- 日経平均、49000円割れ 国賊高市を許すな [402859164]
- 【悲報】麻生太郎、石破憎しで高市を擁立し晩節を汚す [884040186]
- 【高市速報】日本「中国さんお願い首脳会談させて!ねえってば!😭」 [931948549]
- とうすこ🏡愛され絵文字♡🤥👊😅👊👶♡
- 中国とのパイプ役がいない高市政権、実施詰みか [668970678]
- 【画像】セクシー女優・天沢りんさん「お休み頂いてた半年間でこんな体になりました🪽🤍」👉予想通りの展開に [242521385]
