使用gcc / clang C扩展来测试宏参数是否为指针

时间:2018-04-17 17:11:32

标签: c gcc clang gcc-extensions

使用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()

0 个答案:

没有答案