使用GCC C在AIX上处理空指针

jus*_*ime 7 c aix gcc

我们有一个用C编写的代码,有时候不能很好地处理零指针.

代码最初是在Solaris上编写的,这样的指针会导致分段错误.不理想,但比耕作更好.

我们的经验是,如果从AIX上的空指针读取,则得到0.如果使用xlc编译器,则可以添加一个选项-qcheck=all来捕获这些指针.但我们使用gcc(并希望继续使用该编译器).请问GCC提供这样的选择?

Dre*_*ann 7

gcc提供这样的选择吗?

我怯懦地自愿回答否,但事实并非如此.虽然我不能引用缺少有关gcc和运行时NULL检查的信息.

你正在解决的问题是你试图在一个编写得不好的程序中更多地定义未定义的行为.

我建议您咬紧牙关并切换到xlc或手动添加NULL检查代码,直到找到并删除不良行为.

考虑:

  • 使宏空以检查指针
  • 在指针赋值后添加该宏
  • 将该宏添加到接受指针的函数的入口点

删除错误后,您可以开始删除这些检查.