GCC コンパイラのトリックですが、コンパイラに分岐指示のヒントを与えることができます (Linux カーネルでは一般的です)
#define likely(x) __builtin_expect((x),1)
#define unlikely(x) __builtin_expect((x),0)
参照:http://kerneltrap.org/node/4705
これについて私が気に入っているのは、一部の関数に表現力を追加することです.
void foo(int arg)
{
if (unlikely(arg == 0)) {
do_this();
return;
}
do_that();
...
}
int8_t
int16_t
int32_t
uint8_t
uint16_t
uint32_t
これらは標準のオプション項目ですが、人々が絶えず再定義しているため、隠された機能でなければなりません。私が取り組んできた (そして今もなお) あるコード ベースには、すべて異なる識別子を持つ複数の再定義があります。ほとんどの場合、プリプロセッサ マクロを使用します:
#define INT16 short
#define INT32 long
等々。髪を伸ばしたくなる。 おかしな標準の整数型定義を使用するだけです!
コンマ演算子は広く使用されていません。確かに悪用される可能性はありますが、非常に便利な場合もあります。この使用法は最も一般的なものです:
for (int i=0; i<10; i++, doSomethingElse())
{
/* whatever */
}
ただし、この演算子はどこでも使用できます。観察:
int j = (printf("Assigning variable j\n"), getValueFromSomewhere());
各ステートメントが評価されますが、式の値は最後に評価されたステートメントの値になります。