当前位置:  开发笔记 > 编程语言 > 正文

如何定义地址为null的对象?

如何解决《如何定义地址为null的对象?》经验,为你挑选了1个好方法。

我想知道如何在C中定义一个对象,其引用将为null?

// definition of foo 
...
void * bar = &foo; // bar must be null

有一些方法我可以找到它,但没有一个符合我的需要.

__attribute__((weak)) extern int foo; //not working with cygwin/gcc 3.4
__attribute__((at(0))) int foo;       //only with rvds
#define foo (*(int*) 0)               //cannot be embedded in a macro

实际上,我更喜欢符合标准的解决方案(c99),但任何正常工作都可以.


编辑:这样做的原因是bar不会总是为空.这是一个更相关的例子:

// macro that will define foo to a real object or to *null
DECL(foo);

int * bar = &foo;

if(bar) {
  // we can call func
  func(bar);
} else {
  // bar undefined
  exit(-1);
}

当然这仍然不是很相关,因为我可以在我的条件下使用#if.该项目实际上涉及大型结构,大量文件,一些编译器,一些cpu目标,以及许多程序员,他们生成的错误概率指数与他们使用的语法的复杂性呈指数关系.这就是为什么我想要一个简单的宏来声明我的foo对象.



1> Yuliy..:

我必须遗漏一些东西,但什么不起作用void * bar = NULL

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有