匿名メールで失礼します。 クソみたいなキュレーションサイトやコピペアフィが氾濫する昨今、 翻訳manページには大変お世話になっております。 ソースman http://man7.org/linux/man-pages/man3/stdarg.3.html va_arg() ... The argument type is a type name specified so that the type of a pointer to an object that has the specified type can be obtained simply by adding a * to type. ... 日本語man https://linuxjm.osdn.jp/html/LDP_man-pages/man3/stdarg.3.html va_arg() ... 引き数 type は型の名前である。 type の前に * を付ければ、 オブジェクトへの型付きポインターが得られる。 ... (正)>>> 引数typeは、単に*を追加するだけで、指定した型を持つ オブジェクトへのポインタ型が取得できるような型名です。 ---以下、参考--- 意訳 引数typeは型名です。これは末尾に*を追加するだけでポインタ型と れるようなwordでなくてはなりません。 例 va_arg(va, int) ... int* はポインタ型となれるのでOK va_arg(va, void*) ... void** はポインタのポインタ型で文法的に正しいのでOK va_arg(va, int (*fp)(int) ) ... 関数ポインタだが、int (*fp)(int)*は文法的におかしいのでNG typedef int (*MYtype)(int) va_arg(va, MYtype) ... MYtype* はダブルポインタと解釈可能なのでOK