C 言語 (C11) に対する gcc/tcc/clang の拡張機能を使用して、マクロ引数にポインター型があるかどうかを検出することは可能ですか?
詳細: 私は単一間接ポインターを取るマクロを使用していますが、対応する「コンストラクター」マクロが取るものであるため、そのポインターにポインターを渡したくなるのですが、そうするとエラーになるので、現在、次のようなものを使用しています:
#define ISPTR(X) (sizeof(X)==sizeof(void*)&&_Alignof(X)==_Alignof(void*)) /*inaccurate*/
#define TAKE_SINGLY_INDIRECT(P) do{ _Static_assert(!ISPTR(*(P)), "pass a singly indirect pointer"); /*...*/ }while(0)
自分から自分を守るために。実装するより良い方法はありISPTR()
ますか?