3

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()ますか?

4

0 に答える 0