[過去ログ] C言語なら俺に聞け 163 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
661: (ワッチョイ 4618-6Hi7) 02/12(水)12:49 ID:J/UI6pYQ0(1) AAS
>>658
未定義だから不明を連呼されても大して参考にならんわけで
なぜ現実のgccではあのような結果になるのか理由を説明できないのか?
わかってないようだけど最適化は大いに関係してるぞ
662: (ワッチョイ de76-/Fy3) 02/12(水)13:26 ID:7GgOweZ60(1) AAS
えーと未定義や環境依存を使ったりとかは
Cおよびコンピュータの理解が不十分な
質の劣るプログラマが存在するからでしょうに
そういう人達に重要プログラムを書かせる責任問題でもある
663: (ワッチョイ 5302-aFRq) 02/12(水)15:09 ID:+Pz/j8Me0(1) AAS
相手に過大に説明を要求して、自分は分かろうとしない者は嫌われちゃうよ
664: (ワッチョイ 1e63-euVe) 02/12(水)15:17 ID:iId2MJ1V0(1) AAS
gccのフォーラムで質問出してみたら?
参考にできる回答が得られるかも知れないよ
665: (ワッチョイ d301-XAIF) 02/12(水)15:52 ID:WVzDbo940(2/2) AAS
>ポインタにはprovenanceという,どのオブジェクト由来かの情報が含まれています
↑まずこれがおかしい
666: (ササクッテロラ Spa3-Z3xl) 02/12(水)16:26 ID:I956D6cKp(1) AAS
ランタイムじゃなくてコンパイル時の静的なルールだろうね
667(1): (ワッチョイ ea07-XAIF) 02/12(水)17:12 ID:1bCkYFVx0(1) AAS
投資家はRustを信頼するって言ってるんだから、Rustとおんなじようにすればいいだけ
俺はC/C++派なので、どんどんRustの実績をぶんどってくるべきって思ってる
668: はちみつ餃子◆8X2XSCHEME (ワッチョイ ff32-DO7v) 02/12(水)17:47 ID:cXwd7RB80(2/2) AAS
>>667
Rust のようにやるなら Rust のほうが巧くやれる。
当たり前だろ。
669: 警備員[Lv.1][新芽] (ワッチョイ aba3-tGgj) 02/13(木)00:32 ID:rym7RjTu0(1/2) AAS
移植性が求められることばかりでもないし、最適化などのオプションも頻繁に取ったりつけたりしないし、思い通りに動かなければアセンブルリストみたりするけど、コンパイラが出力するコードが予想通りかなんて観点はないし、実践的ではないけど、人を小馬鹿にしたりしなければ勉強になって面白い話なのに
670: 警備員[Lv.1][新芽] (ワッチョイ aba3-tGgj) 02/13(木)00:34 ID:rym7RjTu0(2/2) AAS
実践的でない、はちょっと違うか
671: (ワッチョイ 8655-u07z) 02/15(土)13:31 ID:vKfoke/00(1) AAS
Arduino (ESP32)で文字列変換をしたいです。
tの文字列をtm structに変換したいんですが,タイムゾーンのオフセット部分の+9:00の扱いが分かりません。
%Zはタイムゾーンのオフセットを分を指定する場合で、%zだとUTCなどタイムゾーン名を指定する場合に使うみたいでした。
どうやるんでしょうか?
外部リンク:pastebin.com
672(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ ff32-XAIF) 02/15(土)15:04 ID:ewglApEf0(1/3) AAS
strptime で %z や %Z でタイムゾーンを扱えるのは glibc の拡張 (他で真似している場合もあるかもしれんけど) なんだけど、 Arduino の C ライブラリは glibc ベースなの?
そうじゃないなら各ライブラリのドキュメント (またはソースコード) を読まないとわからないし、そもそもそんな機能はないのかもしれない。
673(1): (ワッチョイ 5357-u07z) 02/15(土)16:19 ID:BNBq5D0N0(1) AAS
>>672
どうもありがとうございます
%zのようなのを使わず+の前後で分けてまず前だけでtm structに変換して後ろはエポック秒が何かに変換して使うのがベターでしょうか?
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
パースするだけならたいして複雑なものではないので自分で書いてみてもいいかな。
ちなみにタイムゾーンを略称で扱うのは面倒な事情が絡む。
タイムゾーンを標準時からの差の時間で表すときはその時点での差があれば十分なので簡単なんだけど、略称で表すときはサマータイムの情報もいる。
たとえばニューヨークのタイムゾーン (EST) は普段は -05:00 だけどサマータイム中は -04:00 になる。
単に EST=-05:00 というわけではない。
そんでもってこのへんの扱いが面倒なのは変わることは割とよくあるということ。
サマータイムの期間が変わったりずらす時間が変わったり、あるいはゾーンが増えたり減ったりするのは政治的な判断なので情報を定期的に更新する前提じゃないときちんと運用できない。
パソコンの OS だと適当なタイミングで更新する仕組みがあるのが普通だけど組み込みシステムだとそうもいかないこともある。
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 の記述がない。
6.5.8 Relational operators
6.5.9 Equality operators
でも同様の内容となっている。また、
N3231 外部リンク[pdf]:www.open-std.org
2024/03/21 Kleynhans, TS 6010 A Provenance-aware Memory Object Model for C, Revision Draft
N3005
2022/06/16 Gustedt, A Provenance-aware Memory Object Model for C, draft TS 6010, version June 2022
では、provenance と abstract address という用語が導入されてスッキリとした文面になっている。
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
自己紹介かな
上下前次1-新書関写板覧索設栞歴
あと 312 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.019s