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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
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
自己紹介かな
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 なんですかね)というつもりで書いたのだけど、分かりにくくてすまんね
1-
あと 301 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.017s