投稿者「mod_poppo」のアーカイブ

C言語の可変長引数マクロで擬似オーバーロード

C99で導入されたプリプロセッサマクロの可変長引数を使って、引数の個数によるオーバーロードっぽいことをするメモ。

参考:

可変長引数の部分への実引数が0個というのはC言語の規格的にはナシなので、引数が0個の場合には対応しない。(幾つかのコンパイラでは引数が0個でも通るが…)

GCCの場合に0個の引数を処理したい場合、GCC拡張の , ## __VA_ARGS__ みたいなやつを使うといい感じになる。

VC++で

#define CHOOSE(a0,a1,...)
#define hoge(...) CHOOSE(__VA_ARGS__)

という風に書くと、 __VA_ARGS__ の部分が一つの引数(a0)として関数型マクロに渡ってしまうので、ここに書いたコードでは CHOOSECHOOSE2 という風にもう一段階噛ませている。

C11の _Generic とかを使えば引数の型によるオーバーロードもできそうだ。先例:

FlashAirで遊ぶ — SPIでIOボードを制御

前回はFlashAirに直接LEDをつないでLEDを制御したが、今度は秋月のFlashAir DIP IOボードキットを介してLEDを制御してみよう。

用意するもの

続きを読む

0の0乗

「0の0乗」については、数学をやっている人とそうじゃない人で割と認識に差がありそうだと思う。そこで、(まだ青二才の学生ではあるが)数学をやっている者の端くれとして思うことを書いておく。

まず、(たぶん)世間でよく言われている「0の0乗を1とすべき理由」と「0の0乗が不定となる理由」について述べ、それを踏まえて、数学をやる上での「それでも0の0乗を1とする理由」を述べる。 続きを読む

家のネットワーク環境を整えた話

最近、NASを買ったり無線LANルーターを新しくした。そこで、新しい機器の導入によって良くなったこととかを日記として書いておく。NASのレビューと無線LANルーターのレビューとVPNについてのあれこれとIPv6についてのあれこれが混ざっているが、日記なのでしょうがない。

この記事はチュートリアルとかではないので、「こういう環境でコレを導入して適切に設定したらうまくいった」とは書いても「適切な設定」の手順は書かない。

続きを読む

Keynoteのリモート操作

Keynoteで発表するとき、ずっとMacの前に立っているのもアレなので、リモコンで制御したい。

昔のMacにはApple Remote用の赤外線受光部があって、Keynoteを操作できた。しかし、今のMac(Mac miniは例外か)からはそういうのは消えて、Apple RemoteはApple TV専用みたいな感じになってしまった。

今はiPhoneやiPadのKeynoteアプリを使って遠隔操作するのが標準的な方法(?)のようだ。リモート操作だけではなくて、iPhoneの画面で発表者ノートとかも見れる。便利だ!

…と言いたいところだが、

  • iPhone/iPadを持っていない
  • iPadは持っているが、でかいので片手で持てない
  • 触感のないタッチパネルではなくて、物理的なボタンのついたリモコンが欲しい(リモコンの操作をするのに手元を見たくない)

という理由で、物理的なリモコンが使いたいという人もいるだろう。

そこで、赤外線受光部を搭載しないMacで、物理的なリモコンを使ってKeynoteを操作することを考えてみよう。
続きを読む

「脱背理法」のまやかしとウソ

「脱背理法」とは

わざわざここでは説明しない。もしこれを読んでいる貴方が「脱背理法」を知らないのであれば、その状態がきっと幸せなので、無理に知ろうとしない方が良い。

続きを読む

dvisvgmとSTIXフォント

以前、dvisvgmについてちょろっと書いた。その時は、dvisvgmでSVGファイルを生成する時に --no-fonts オプション(文字のアウトライン化をする)をつけないとフォントが正常に指定されないという結論だったわけだが、それではブラウザで表示した時に文字が選択できない。

そこで、dvisvgmで --no-fonts オプションを使わずに生成したSVGファイルで、文字が正常に表示されるような方法を考えてみよう。

続きを読む

LaTeXでPDF出力する際のTips その2

LaTeXでPDF出力する際のTips では、

  • PDFのメタデータの文字化けの解消方法
  • PDFのタイトルや作成者を \title, \author から自動的に設定する方法

を扱った。

今度は、PDFの目次(ブックマーク、しおりと呼ぶこともあるようだが、この記事では「目次」で通す)についてのTipsを扱う。

続きを読む