FragileMoonの日記: 初級C++会話「遺憾に存じます」 2
日記 by
FragileMoon
読書をしようと思ってソースを読んでいたら、
#define unlikely(x) if((x))
という謎のマクロに遭遇。
使っている場面を調べてみると、if文の代替として
unlikely ( /* たぶんないとは思う危険な状況 */ )
{
// error処理
}
の形で、C/C++を使って「ある事象に対する遺憾の意を表明するための表現」だったみたい。
マクロはできるだけ使いたくないので真似したいとは思わないけれど、これはこれでありなのかな。
こういう表現を集めれば、NHKあたりでC++会話講座が放送できそうな気がする。
C++星に旅行に行ってもだいじょうぶ、みたいな。
番組の第一声は「std::cout << "Hello world!" << std::endl;」あたりで。
締めは「それではまた来週。return 0;」。
もちろんmain()から脱出するためです。
とはいえ、目先の問題は、英会話における "repeat after me." をどう表現するか。
普通に考えればループ作っておいて「continue;」かなぁ。
gccなんかには (スコア:2, 興味深い)
CPUに分岐予測のためのヒントを与える独自拡張キーワードがあるので(「ありそうにない」ほうには分岐しないと予測できる)、それを隠蔽する(他のコンパイラでは単なるif文に置換する)ためにマクロが使われることもあるようです。
Re:gccなんかには (スコア:1)
おぉ。
ご指摘ありがとうございます。
きっとその文化から形をもらってきたのか、移植や拡張に備えていたんですね。