相当久しぶりにC言語を弄ってみて、色々変わっていることに気がついた。 C言語は、これからもAVRなんかで、使う場面が出てくると思うので、一度ざっと復習しておいた方がいいと思って、解説サイトをざっと読んでいる。
昔と変わっているのは、構造体メンバのアライメント。 メモリへのアクセスを効率的にするために、配置するアドレスに制限を付けている。 8ビットのCPUがメインだったころは、メモリ容量そのものが少なかったり、そもそもバイト単位でのアクセスしかしてなかったので、パディングなどという概念はなかったと思うけど、今は、使用メモリを少なくするよりは、アクセス効率を上げた方が全体のパフォーマンスが上がるということなんだろう。 まあ、実際、構造体を使う時に、パディングの状態を気にしなければいけない場面は少ないと思うけど、知識として持っていないと思わぬバグの遭遇する危険がありそう。
もう一つ変わっているのは、ビットフィールド構造体。 これも昔は無かったような気がする。 ビット演算を簡単にする手法なんだろうけど、イマイチ便利さがわからない。 何か素晴らしい用途があるんだろうか..
そんなわけで、C#によるSDRPlayの制御をするつもりだったけど、どんどん横道にそれていっている、今日この頃..。