使用gcc / tcc / clang对C语言的扩展(C11),是否可以检测是否 一个宏参数有一个指针类型?
详细说明: 我正在使用一个应该采用单间接指针的宏,但是很有可能将指针传递给该指针,因为这是相应的“构造函数”宏所采用的,但这样做会出错,所以我目前正在使用类似的东西:
#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()
?