>777
MapStringInt の仕様が分からない。何で引数 3 つなの?
あと、文字列の代入というのがもう一段階ハードルを上げてる。
strdup されるの?それとも strcpy?あるいはポインタ値を書き換えるだけ?

なお、仮に、int* MapIntInt_(int key) という関数があって *MapIntInt_(5) = 3 という使い方をするなら
#define MapIntInt(key) (*MapIntInt_(key))
ってすりゃいいだろうね。