首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于确定变量是否为指针的宏

用于确定变量是否为指针的宏
EN

Stack Overflow用户
提问于 2015-09-16 15:22:00
回答 3查看 117关注 0票数 2

我想要一个宏,它可以决定给定的变量是否为指针?

我的要求如下:

代码语言:javascript
运行
复制
#define IS_PTR(x)       ?
#define MY_TEST(x)      IS_PTR(x)?&(*x):x  ===> 1 if ptr and 0 means ref.

void main()
{  int a;
   int *b;
   int *c = MY_TEST(*b)   ====> I have to *b instead of b directly 
                          ====> after precompilation int *c = &b  
   int d = MY_TEST(a)     ====> after precompilation int d = d   
}
EN

Stack Overflow用户

发布于 2015-09-16 16:26:36

在C11中,您可以使用通用选择。然而,我真的不明白你想要做什么。

代码语言:javascript
运行
复制
#include <stdio.h>
#define IS_PTR(x) _Generic((x), int *: 1, int: 0)

void main() {
    int a;
    int *b;

    printf("IS_PTR(a) = %d\n", IS_PTR(a));
    printf("IS_PTR(b) = %d\n", IS_PTR(b));
}

下面的输出

代码语言:javascript
运行
复制
IS_PTR(a) = 0
IS_PTR(b) = 1

在我的系统上。

编辑:由于某些原因,人们对这个答案的评价很低。虽然这不能区分指针和非指针,但它确实适用于任意数量的类型。对于操作员或其他偶然遇到这个问题的人来说,这可能已经足够好了。

目前最顶层的答案声称指针只是“隐藏在引擎盖下”的整数。这取决于“引擎盖下”到底是什么意思,这并不完全正确。(最后,一切都是整数和浮点数...)

票数 -2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32602149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档