当前位置:  技术问答>linux和unix

在源码中如何判断一个符号是变量还是指针?

    来源: 互联网  发布时间:2016-05-04

    本文导语:  定义一个结构类型A,如下。 typedef struct {     int val; } A; 定义一个宏SetValue用于设置A类型变量的val的值,其中X即可以是指向A类型变量的指针,也可以是A类型的变量。 #define SetValue(x, y)  {     if (x是指针)   ...

定义一个结构类型A,如下。
typedef struct
{
    int val;
} A;

定义一个宏SetValue用于设置A类型变量的val的值,其中X即可以是指向A类型变量的指针,也可以是A类型的变量。
#define SetValue(x, y) 
{
    if (x是指针)
    x->val = y; 
    else 
    x.val = y; 
}

问题是,如何判断符号x是指针,还是变量???有宏可以用吗?

|
宏展开后这段代码能编译通过?
   if (x是指针) 
    x->val = y;  
    else  
    x.val = y;  
必定会有一个编译报错吧

|

可以做到的,

typedef struct 

    struct A * pSelf;
    int val; 
} A; 

初始化的是时候令  pSelf 指向自己

A x;
x.pSelf = &x;


下面提供一个宏判断x是指针还是不是

#define PTR_OF_A 0
#define VALUE_OF_A 1
#define SOMETHING_ELSE  2  

#define BPTR(x, result)  { 
                  A *PTR_BPTR;
                  memcpy(&(PTR_BPTR), &(x), 4); 
                  if (PTR_BPTR == &(x))  
                  {
                      (result) = VALUE_OF_A   
                  }
                  else
                  {
                     memcpy(&(PTR_BPTR), x, 4);  
                     if (PTR_BPTR == x) 
                     {
                        (result) = PTR_OF_A;
                     }
                     else
                     {
                         (result) = SOMETHING_ELSE
                     }

                  }



    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 但是内核源码中(相关c文件)明明EXPORT了 函数,为什么查看内核符号/proc/kallsys却没有该函数
  • linux/centos源码安装nginx编译配置选项参数介绍
  • 大家好,我有从网上下的BT源码和MPLAYER源码(是LINUX源码安装的)我想分析一下这些源码。可是这些源码有工作区么?
  • docker源码分析之容器日志处理与log-driver实现
  • 内核源码和结果make过的内核源码有什么区别
  • linux/centos下安装nginx(rpm安装和源码安装)详细步骤
  • 怎么通过内核源码包生成源码树?
  • 使用GDB单步调试源码时,单步执行与源码不一致.
  • 你们说的查看源码和调试源码的vi(或vim),是指gvim把?
  • 用 yum 安装的源码跟 www.kernel.org down的源码有没差别?
  • 如何发布自己的源码包,以及从别人的源码包中获取编译参数
  • FC5源码包安装,哪里有源码包的下载啊?都瞎说。
  • gdb调试elf文件,为什么只能看到c源码,看不到汇编源码???
  • 我在学习4.4BSD设计与实现那本书时,发现很难找到源码了,那位先行者可以给我留一个源码的连接?谢了
  • 请问,shell的一些命令的源码在linux源码树中的那部分?
  • 搜索引擎蜘蛛源码,谁能帮我编译一下!!!源码相赠(没办法,我了解Linux!!!)
  • 内核源码求助?
  • linux下命令应用软件的源码放在那里?
  • redhat 3张光盘中那一张包含源码?
  • 请问怎么快速找到sys_open的源码
  • 请大家帮忙gnu ftp上gcc源码是哪个文件?
  • 100分求能收发附件的jsp与java mail结合的源码~~~~


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3