ときどきの雑記帖 RE* (新南口)
Where Late the Sweet Birds Sang
逆シャア
『機動戦士ガンダム 逆襲のシャア』 tvkで2月21日放送 - amass
メモ。
カレンダー
久しぶりに和田先生のblogの更新があって
私がこの数年愛用している予定表の話はこのブログに何回か書いた. ところで, 今年の予定表の表紙にある 週日定数も月齢定数も共に0である. つまり下のようなのだ.
とあって、そのすぐあとに
0 | 2 5 5 | 8 3 6 | 1 4 7 | 2 5 0 | 1 |
0 | 0 2 0 | 2 2 4 | 5 6 7 | 8 9 10 | 11 |
こんな表がある。 2 5 5 …とか 0 2 0 …ってなんだろう? と疑問に思ったのでblogの分類を頼りに探してみると、 上の行は パラメトロン計算機: 曜日の計算 にあった。
m | 1月 | 2月 | 3月 | 4月 | 5月 | 6月 | 7月 | 8月 | 9月 | 10月 | 11月 | 12月 |
h | 2 | 5 | 5 | 8 | 3 | 6 | 1 | 4 | 7 | 2 | 5 | 0 |
下の行の数列に関しては パラメトロン計算機: 月齢カレンダー とそこからリンクの張られている おに・おに・にし―簡易月齢計算法 に。
構造体
私の観測範囲の C の初学者、構造体で詰まる人が結構いる。でもってポインタは案外詰まらない。
— yoh2 (@yoh2_sdj) January 23, 2025
構造体で詰まるという話は なんとなく納得はできるけど、 ポインターと比べて… というのは意外な気もする。
ダブルポインター
ダブルポインタだと一時的なポインタを渡せない場合がある という記事で
C言語では以下のように一行で名前のないローカルの変数を作成できたようですが、C++ にはそういう機能はないですね。
MyStruct myStruct; myFunction(&(MyStruct*){&myStruct});
という記述があった。 そんなのできたっけ? と思ったので試しに
#include <stdio.h>
struct MyStruct {
int val;
};
typedef struct MyStruct MyStruct;
void myFunction(MyStruct **ppmyStruct) {
}
int
main() {
MyStruct myStruct = { .val = 42 };
myFunction(&(MyStruct*){&myStruct});
return 0;
}
こんなやっつけプログラムを書いてgccでコンパイルすると 警告も出ずに通った。 それではとさらにアセンブリ言語のコードを吐かせると
.file "dpointer.c"
.text
.globl myFunction
.def myFunction; .scl 2; .type 32; .endef
.seh_proc myFunction
myFunction:
pushq %rbp
.seh_pushreg %rbp
movq %rsp, %rbp
.seh_setframe %rbp, 0
.seh_endprologue
movq %rcx, 16(%rbp)
nop
popq %rbp
ret
.seh_endproc
.def __main; .scl 2; .type 32; .endef
.globl main
.def main; .scl 2; .type 32; .endef
.seh_proc main
main:
pushq %rbp
.seh_pushreg %rbp
movq %rsp, %rbp
.seh_setframe %rbp, 0
subq $48, %rsp
.seh_stackalloc 48
.seh_endprologue
call __main
movl $42, -12(%rbp)
leaq -12(%rbp), %rax
movq %rax, -8(%rbp)
leaq -8(%rbp), %rax
movq %rax, %rcx
call myFunction
movl $0, %eax
addq $48, %rsp
popq %rbp
ret
.seh_endproc
.ident "GCC: (GNU) 7.4.0"
leaqが二回出てきているので、確かにそれっぽいコードのようだ。
けど、キャストの結果に&
演算子を適用できたんだっけ?🤔
awk
gawk
gawkのリポジトリを眺めていたら minrx組込み用のブランチで
Update minrx.cpp. - gawk.git - gawk
+ if constexpr (sizeof...(XArgs) > 0) + for (TYPE x : { xargs... }) + if (x != yv[i++]) + return x > yv[i - 1]; + return false;
のように...
を使ったコードが何カ所かでてきた。
なんとなく見覚えはあるし動作の見当もつくけど
あまり自信がなかったので(ry
省略記号と可変個引数のテンプレート | Microsoft Learn
可変個引数テンプレートでは、sizeof…() 演算子が使用されます (従来の sizeof() 演算子とは無関係です)。
C++のパラメータパック基礎&パック展開テクニック #C++ - Qiita
sizeof…( ) にパラメータパックを指定すると要素数を取得できる。
- ラムダキャプチャ中での前置ellipsisと後置ellipsis - yohhoyの日記
- How to detect the size of the parameters that are passed through ellipsis in C++? - Stack Overflow
- sizeof… operator (since C++11) - cppreference.com
- sizeof - Wikipedia
C++よくわからんの舞(AA省略)
ヒューズ
「切れな〜いヒューズがあるもんかぁ〜」というフレーズが脳内をよぎった(^^)
— Norihiro Kumagai (@tendai22plus) January 26, 2025
嗚呼痛恨の過電流♫
— Kasumi YOSHINO/JA1UMI (@yKasumi) January 26, 2025
K
←4k
— AndroMEGA (@AndroMEGA18) January 27, 2025
8k→ pic.twitter.com/B7UHsLt85V
表紙
The only book that you need for C Language pic.twitter.com/loEFhwhlHr
— Mohit Mishra (@chessMan786) January 27, 2025
え、K&Rだよねこれ。 今こんな表紙なの?
— nikolaos poulos 🇬🇷 (@astroxenios) January 27, 2025
こっちは見覚えあるし持ってる(はずだ)けど。
あー、international editionかどうかで違う?