[過去ログ] C言語なら俺に聞け 163 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
674: (ブーイモ MM3b-6Hi7) 02/15(土)16:25 ID:Q9F/iLI2M(1) AAS
やり方思いついたならやれ
675: はちみつ餃子◆8X2XSCHEME (ワッチョイ ff32-XAIF) 02/15(土)16:39 ID:ewglApEf0(2/3) AAS
>>673
どうやら Arduino は newlib ベースの模様。
newlib の strptime はタイムゾーンをサポートしてない。

どうにかしてタイムゾーンを扱いたい場合にどうやって実装するかは個々の事情によると思うのでなんとも言えない。
実績のある実装をどこかから持ってきたほうが良いんじゃないかと個人的には思う。
外部リンク:www.google.com
パースするだけならたいして複雑なものではないので自分で書いてみてもいいかな。
省7
676: はちみつ餃子◆8X2XSCHEME (ワッチョイ ff32-DO7v) 02/15(土)21:12 ID:ewglApEf0(3/3) AAS
基本的なことを書き忘れてた。
strptime は C の言語仕様には無い関数で、 POSIX (UNIX 系 OS の統一仕様) にある。
POSIX は最低限の共通部分だけをまとめたもので実装には雑多な拡張を入れる前提なので各実装によってサポート内容が違う。
POSIX 準拠ではない環境で部分的に POSIX を真似てるだけ (POSIX の最低限の要求も満たしてない) ということもある。
677: (アウアウエー Sa13-9cJ9) 02/16(日)12:03 ID:rAQQ2/+ca(1) AAS
最初からtmstructをUTCで取得した方が楽ジャマイカ
678: (ワッチョイ 232c-1nj7) 02/17(月)01:18 ID:mzGEyEzq0(1) AAS
有効な同型ポインタの比較において、同一オブジェクト/配列由来でない場合、
== の結果は 0
(未定義動作ではない)

C99(N1256) Annex J.2 Undefined behavior

— Pointers that do not point to the same aggregate or union (nor just beyond the same
array object) are compared using relational operators (6.5.8).

ここに Equality operators の記述がない。
省8
679: はちみつ餃子◆8X2XSCHEME (ワッチョイ ed32-7Htj) 02/17(月)10:52 ID:tIRsmIw80(1) AAS
C99 をあらためて読み返してみたら確かにそうだ……。

・ ふたつのポインタが等しいと判断される条件が書いてあって「その場合に限り」等しいとする
・ 各演算子は指定された関係が真の場合は1を,偽の場合は0を返す
・ 未定義と書いてある (またはそれと等価な言い回し) か動作の明示的な定義がない場合は全て未定義

等しい条件を満たさないなら 0 が返されることを保証していることになるので未定義ではないことになる。

でもまあ現実的に考えたらおかしいし、欠陥報告が出てたりしない?
680
(1): (ワッチョイ 1501-7Htj) 02/17(月)19:30 ID:iQTBmgHC0(1) AAS
>>648のサンプルプログラムで同じことが起きることってある?
681: (ワッチョイ 23ad-MHHu) 02/22(土)07:05 ID:nEyoRU5r0(1/2) AAS
>>680
WSL2 の Ubuntu 22.04.5 にインストールされている gcc 11.4.0 で gcc -O でコンパイルしたら起きた。
-O なしだと起きない。
682: (ワッチョイ fde8-ItHp) 02/22(土)12:11 ID:DWcN/KDk0(1) AAS
余計なことを
683
(1): (ワッチョイ 23ad-MHHu) 02/22(土)14:47 ID:nEyoRU5r0(2/2) AAS
最適化オプションの有無で違いが出る状態はできれば止めて欲しかったな。やるとしても別オプションでやって欲しかった。
684
(1): (ワッチョイ 1bab-2o2c) 02/22(土)16:41 ID:Z2hFLtuL0(1) AAS
その壁越えられないやつ多いよね
仕事でも最適化すると動かなくなるからってオフでリリースしてた雑魚エンジニアいたわ
685: (ワッチョイ cba1-Nstt) 02/22(土)17:57 ID:HOxFgRC/0(1) AAS
コンパイラのバグって事じゃないのか?
686: はちみつ餃子◆8X2XSCHEME (ワッチョイ b132-FOV+) 02/23(日)20:21 ID:5K9CwmG10(1) AAS
>>683
-0 はいくつかの具体的な最適化オプションを束ねたものだよ。
外部リンク[html]:gcc.gnu.org
このうちのどれが効いてるのかは知らんけど。
687
(1): (ワッチョイ b691-M1fQ) 02/23(日)21:01 ID:VuC2otmU0(1) AAS
>>684
最適化オフでのリリースは一つの有力な選択だと思います。
688: (ワッチョイ 094f-/70v) 02/23(日)21:45 ID:K8mfivgh0(1) AAS
最適化に副作用あるのは常識
689: (ブーイモ MM99-A0+M) 02/23(日)21:54 ID:FQnOu1obM(1) AAS
>>687
まザコならしょうがないわな
組み込みならハードのコスト一段下げられるけど諦めるしかない
そんなザコ会社だから低収入もしかたない
690: (ワッチョイ 0d01-Ah42) 02/24(月)01:00 ID:IorN2uWP0(1) AAS
自己紹介かな
691: (ワッチョイ aeb7-/OIl) 02/24(月)17:12 ID:qLUUxQg70(1/2) AAS
gccなら-O0でも実施される最適化はあるので本気で最適化オフにしたいなら-O0で有効になる項目を-fno-に個別に指定する必要がありそこそこ面倒
692: (ワッチョイ aebd-A0+M) 02/24(月)17:18 ID:SlW5Uo1a0(1) AAS
最適化オフとか言ってる人は、UBを踏んでしまってるから最適化で動作が変わるってことわかってんのか?
693: (ワッチョイ aeb7-/OIl) 02/24(月)17:22 ID:qLUUxQg70(2/2) AAS
まあコンパイラの最適化バグである可能性もないわけではないがな
694
(1): (ワッチョイ b691-M1fQ) 02/24(月)20:28 ID:V/nislFh0(1) AAS
組み込み分野だと最適化によりデバッグがしづらくなることが多い。
695
(1): 警備員[Lv.1][新芽] (ワッチョイ d5f7-a+6O) 02/24(月)21:56 ID:JeKlmQzN0(1) AAS
gccで -O2 なし -Wall ありでコンパイルすると strict aliasing の警告がでないけど、
-O2 -Wall ありだと strict aliasing の警告が出るケースに当たったのだけど、
strict aliasing って安全に最適化するためのアレなのですかね(最適化しないときは strict aliasing には無頓着)
696: (ワッチョイ d5a2-eBms) 02/24(月)22:52 ID:ifUFLigf0(1) AAS
この人たちホントgccが大好きだよね
697: (ワッチョイ 76a1-x4eQ) 02/24(月)23:27 ID:LsxokMxo0(1) AAS
gccはいろんな環境で動かせるので便利ではある
698
(1): (ワッチョイ ae76-A0+M) 02/25(火)01:13 ID:t+eQGWY+0(1/2) AAS
>>694
それ組み込み関係ないから
699
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ b132-FOV+) 02/25(火)08:31 ID:6jOr+W/20(1/4) AAS
>>695
警告を出すためには警告の条件に引っ掛かっていることがわからないといけないという単純な前提がある。
結果を使いもしないのに警告のためだけにエイリアス解析を頑張るのは合理的か?
700: (ワッチョイ b6e5-M1fQ) 02/25(火)09:04 ID:ODzMt1Nm0(1) AAS
>>698
そうだった
701
(2): 警備員[Lv.1][新芽] (ワッチョイ d56d-a+6O) 02/25(火)23:42 ID:MFbkYyJ10(1) AAS
>>699
最適化しないときは strict aliasing が不要なものなんですかね(最適化のための strict aliasing なんですかね)というつもりで書いたのだけど、分かりにくくてすまんね
702
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ b132-Ah42) 02/26(水)10:14 ID:6jOr+W/20(2/4) AAS
>>701
少なくとも GCC や Clang では strict aliasing rules は最適化のためのものという認識で正しいよ。
-fstrict-aliasing (やこれらを含む -O2 以上の最適化) が有効になっているときに限りエイリアスベースの最適化をするし、そのときだけ strict aliasing rules が守られていることを要求する。
703
(1): (ワッチョイ 317b-/OIl) 02/26(水)11:04 ID:x+jOZkKw0(1/2) AAS
strict aliasing rulesを守らないと未定義動作となるのはC言語の決まりなので特定の処理系で問題ないから守らなくて良いという考えは馬鹿のすること
704: (ワッチョイ ae51-A0+M) 02/26(水)11:20 ID:t+eQGWY+0(2/2) AAS
というかstrict aliasing rulesをわかってるやつがあえて守らないって考えにくいでしょ
このスレを見てわかる通りわかってないやつらが大半
705
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ b132-Ah42) 02/26(水)11:38 ID:6jOr+W/20(3/4) AAS
ビットパターンを別の型で読み替える可能性があるなら最初から union で書いておいたほうが人にとっても読みやすいしな。
(C++ では union でも common initial sequence の読み替えしか許しておらず、 C より制約が厳しいので注意。)
706: はちみつ餃子◆8X2XSCHEME (ワッチョイ b132-FOV+) 02/26(水)15:23 ID:6jOr+W/20(4/4) AAS
>>703
未定義は「規格としては何も要求しない」なので処理系が何らかの追加保証をすることを禁じてない。
707
(1): (ワッチョイ 317b-/OIl) 02/26(水)15:45 ID:x+jOZkKw0(2/2) AAS
特定の処理系と心中するつもりでstrict aliasing rulesを守らない奴がいたらすごい馬鹿
708: 警備員[Lv.5][新芽] (ワッチョイ 09df-a+6O) 02/26(水)23:04 ID:0kyhL3S/0(1) AAS
>>702
助言をありがとうございます!!
>>701 より
709
(1): (ワッチョイ b691-M1fQ) 02/27(木)00:09 ID:oCSgSskf0(1) AAS
>>707
移植しないなら別にいいんじゃないの
710: (ワッチョイ 0a20-/OIl) 02/27(木)08:29 ID:Uw13P3Kf0(1/2) AAS
>>709
将来の更新の可能性も考慮しないわけね
711: (ワッチョイ 0d01-Ah42) 02/27(木)09:04 ID:smeEQtfp0(1) AAS
だから将来も移植しないんだろ
712: (ワッチョイ 0a20-/OIl) 02/27(木)09:23 ID:Uw13P3Kf0(2/2) AAS
移植と更新は違うぞw
713
(1): (ブーイモ MMbd-A0+M) 02/27(木)10:21 ID:6jIPAcTSM(1) AAS
そのどうでもいい仮定話いつまでやんの?
714: (ワッチョイ 6a33-X0JC) 02/27(木)22:25 ID:rdt/oSxr0(1) AAS
【帰化朝鮮人を論破】
日本は帰化朝鮮系の家系の人間によって隣国の大韓民国と北朝鮮に侵略行為を受けている
彼らがやっていることは「差別」を盾にした日本人を対象にした迫害であり「民族浄化」である
国際法でもこのような行為は決して許されていない
しかし何となく加害者が日本人で、差別されているの朝鮮系と言う意識を刷り込まれて彼らに遠慮してないか?

事実は逆である、加害者は彼らの方で迫害されているのは日本人である、まずこの意識を共有しよう

なぜそうなっているのか? 新聞、出版社、司法、テレビ局、会社の起業家、大学教授などが帰化系の人間で徒党を組み
省18
715: (ワッチョイ 76a1-x4eQ) 02/27(木)22:56 ID:c6/rsZNB0(1) AAS
まず統一を潰さないと
716: (ワッチョイ 6d07-Ah42) 02/28(金)00:14 ID:FWjziINm0(1) AAS
>>713
次のお題が来るまで(w

我流独習マン(俺含む)には、こそっとありがたい話
ややもするとすぐ浦島になっちまうw
717: はちみつ餃子◆8X2XSCHEME (ワッチョイ b132-Ah42) 02/28(金)10:32 ID:aDguz5rE0(1) AAS
>>705
念のために確認してたら union のメンバを他の型の違うメンバで読み替えて良い規則は JIS (JISX3010:2003) には書いてないっぽい。
欠陥報告で後から修正したから JIS を出した時点では原文にも書いてなかったんだな。
外部リンク[htm]:www.open-std.org
718
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ c132-ctMQ) 03/11(火)17:38 ID:GvJGmymX0(1) AAS
C の公式サイトが登場!
外部リンク:www.c-language.org
719
(1): (ワッチョイ dd01-ctMQ) 03/12(水)20:15 ID:echC0lcV0(1) AAS
AIのおかげでCが主流になるかもな
720: (ササクッテロル Sp85-ZS5M) 03/12(水)21:03 ID:pJ5qTyUbp(1) AAS
>>719
それは無い
721: (ワッチョイ 794b-XET2) 03/12(水)21:59 ID:WyQEi83H0(1) AAS
AIコーディングが進化した結果直接機械語で出力できるようになったけど人間が読めないのは困るから最低限人間が読めて速度も出るCで出すのが主流になるみたいな妄想
722: (ササクッテロル Sp85-ZS5M) 03/12(水)22:07 ID:/p3tzJNRp(1) AAS
AIは何も指定しなきゃjavaやpythonやC#のコードを吐き出すよ
723: (ワッチョイ 1101-6xWR) 03/18(火)10:34 ID:mIJI9ibF0(1) AAS
cはむずい定期
724: (ワッチョイ a1b3-Cuhd) 03/19(水)20:09 ID:WDKEEomI0(1) AAS
文法的にはポインタ周りが(少し)難しいだけ
個人的にはpythonの方が難しく感じるな
725: はちみつ餃子◆8X2XSCHEME (ワッチョイ 215e-a7BF) 03/19(水)20:44 ID:SWZJHd7L0(1) AAS
C が未定義をエラーとして補足せずに黙って変になることがあるのは入門書などをまともに読まずにいろいろ弄って学ぶタイプの人には向いてないな。
ちゃんとした入門書をちゃんと読むならそんなに難しいわけではない。
しかし難しくないことでもしょうもないミスをするのが人というものだという現実もあって、特に規模が大きくなると C はしんどい。
難易度とかいうのとは別の話として、理解していても間違う。
726
(1): (ワッチョイ 13ad-avMV) 03/20(木)04:57 ID:07u24rkx0(1) AAS
まあしかしこの頃のコンパイラは警告やエラーを沢山出してくれて分り易いよ。
昔のはチェックが緩くて出なかったからな。
その状態から gcc で printf() のフォーマットと引数のチェックが出来ると知った時は衝撃を受けた。
727
(1): (ワッチョイ 418c-jD59) 03/20(木)17:01 ID:iinwNT6F0(1/2) AAS
>>726
それな、オプションさえちゃんと付ければ昔でもできてたよ
728
(3): はちみつ餃子◆8X2XSCHEME (ワッチョイ 2170-a7BF) 03/20(木)17:31 ID:PqZkwPwR0(1) AAS
GCC では遅くても 2.95.3 には attribute で文字列が書式であることを指定できて型チェックする機能はあった模様。(2001年頃)
外部リンク[html]:gcc.gnu.org
ただな、このスレにいるようなおじさんの言う「昔」は 1980 年頃の話だったりするんよ。
MS-DOS 用とか CP/M 用とかのコンパイラの話なんよ。
729: (ワッチョイ 71ff-yHWN) 03/20(木)17:39 ID:Enps6Akh0(1) AAS
その年代の人はおじさんじゃなくておじいさんでは
730: (ワッチョイ 418c-jD59) 03/20(木)17:45 ID:iinwNT6F0(2/2) AAS
>>728
スマソ、俺はちょっと若すぎたわ
だいぶ昔からできてた記憶があったがそれよりさらに昔の話とは恐れ入った先輩
731: (ワッチョイ c95f-H5Hv) 03/20(木)18:23 ID:0dSk8Oyx0(1) AAS
メインフレームにダム端末繋げてた時代じゃよ
732: (スフッ Sd33-4EpX) 03/20(木)23:54 ID:t3XlSG3jd(1) AAS
gcc7.1から突然エラーメッセージが親切になったのはあるな
ちょうどclang+llvmが話題になった時期でそれに対抗したらしい
733: (ワッチョイ 13ad-avMV) 03/21(金)07:44 ID:6cMMiEqo0(1/2) AAS
>>727
それはどのぐらい昔かによる。
80年代後半にはまだなかったと思う。
734: (ワッチョイ 13ad-avMV) 03/21(金)07:45 ID:6cMMiEqo0(2/2) AAS
>>728
そうそう。80年代。
735: (ワッチョイ 9bec-91cd) 03/21(金)08:19 ID:kfFumR870(1) AAS
真理子版が便利すぎた。
736: (ワッチョイ 992a-15T+) 03/22(土)13:52 ID:A90b+kK90(1) AAS
他人にも使わせるツールに環境変数「真里子」はキモすぎてビビった
737: (アウアウエー Sa23-D2PX) 03/22(土)14:25 ID:U6/Lg1xxa(1) AAS
>>728
scanf, sscanf で float, double に %f, %lf のところを %f, %f にしてバグるのがありがち
738: 627 (ワッチョイ 5377-avMV) 03/22(土)15:31 ID:7ZrFn0ve0(1) AAS
scanfなんて使ったことねーや
ありがちってほど使ってるんか
739: (ワッチョイ eba1-hjYJ) 03/22(土)15:40 ID:8J5Eq6PC0(1) AAS
scanfに道に落ちているを食べさせてはいけません
740
(1): (ワッチョイ 492a-jhJX) 03/28(金)08:23 ID:+OZuQWBg0(1/4) AAS
AA省
741
(1): (ブーイモ MM26-xG3a) 03/28(金)08:29 ID:v2Oxq7uoM(1/2) AAS
おれの作ったCコンパイラはそんな警告出さないけど何か文句ある?
742: 740 (ワッチョイ 492a-jhJX) 03/28(金)09:29 ID:+OZuQWBg0(2/4) AAS
>>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.
743: はちみつ餃子◆8X2XSCHEME (ワッチョイ ed32-p0tU) 03/28(金)11:25 ID:gM96YdDw0(1/3) AAS
>>740
出さないコンパイラはあるし、その場合に警告を出すコンパイラであっても printf 類を特別扱いしてなんとかしてるので、可変長引数一般では型が合わないときに検出されない。
744: 740 (ワッチョイ 492a-aKLX) 03/28(金)13:15 ID:+OZuQWBg0(3/4) AAS
なるぽろ。%ld に変更せず、放っておくか。ありがとう。

ちなみに、逆に、%ld だと警告する場合も有り得るのだろうか。例えば off_t が非 long の機種があるとか。
745
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ ed32-p0tU) 03/28(金)13:32 ID:gM96YdDw0(2/3) AAS
x86-64 なら System V ABI ではどうせ 64 ビットレジスタで受け渡されるからそこんところでは問題にならないのだが、最適化したときにどうなるかまるで予想がつかない。 放置してよいとは言えない。

いったん intmax_t にキャストするのが正当な方法だと考えられている。
外部リンク[html]:www.jpcert.or.jp
746: (ワッチョイ 6eef-29WZ) 03/28(金)15:39 ID:Gm0qUC0n0(1) AAS
struct X* x;で自動変数を定義した場合
スタック上のどこかにstruct Xの領域が確保されたりしますか?
747: (ブーイモ MM26-xG3a) 03/28(金)15:47 ID:v2Oxq7uoM(2/2) AAS
されない
748: 740 (ワッチョイ 492a-mzfN) 03/28(金)17:27 ID:+OZuQWBg0(4/4) AAS
>>745
> printf("%ju", (uintmax_t) x);

なるぽろ。ありがとう。
749
(1): (ササクッテロラ Spf1-7PGi) 03/28(金)19:09 ID:Yj8GIx0sp(1) AAS
なんだよjって、何の略だ?
750: はちみつ餃子◆8X2XSCHEME (ワッチョイ ed32-p0tU) 03/28(金)22:16 ID:gM96YdDw0(3/3) AAS
>>749
なんらかの単語の略 (頭文字) というわけではないらしいよ。
> j is sort of like "i" for integer
外部リンク[htm]:www.open-std.org
751: 警備員[Lv.2][新芽] (ワッチョイ 6dcd-maST) 03/28(金)23:06 ID:UFqBPtr80(1) AAS
μ→uみたいなものか

大文字の I はもう使われてふのかな?
752
(2): (アウアウウー Saa5-WcQO) 03/29(土)16:07 ID:M3jsTRd4a(1) AAS
long long や unsigned long long の出力に %lld や %llu って昔は使えてた気がするが
最近はだめなんかな
%I64 とか %U64 みたいなのになってるん
753: はちみつ餃子◆8X2XSCHEME (ワッチョイ ed32-p0tU) 03/29(土)16:54 ID:HRez4USp0(1) AAS
>>752
I64 とかはマイクロソフトの拡張。
新しい方法じゃなくてむしろ古い方法が互換性のために残されているだけ。
今となってはあえて使う理由はない。
754: (ワッチョイ 2e2a-aKLX) 03/29(土)17:30 ID:bd7PveSA0(1) AAS
>>752
> %I64 とか %U64

移植が大変そうね。
1-
あと 248 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.025s