检查变量的存在

时间:2015-11-11 13:34:16

标签: c linux posix

我有一个非常小的程序,我希望能够在多个平台上编译。某些平台在sys_signame中提供signal.h,但其他平台则不提供,我需要提供替代方案。使用#define / #ifndef不是一个选项:这些是平台标题,而不是我的,并且似乎没有任何特定的#define行与{{1跨越多个平台。

我不想为每个平台添加特殊情况。这是一个非常小的程序,只有少数人会看到它,它不会在任何生产环境中使用。我还不知道它将用于哪些操作系统。我不值得花时间彻底测试它。对于更重要的程序,我会保存类似的东西。

如何测试全局变量的存在,例如sys_signame

1 个答案:

答案 0 :(得分:2)

我看到它的方式 - 您需要创建一个可在所有平台上运行的备用阵列,具体取决于您准备处理的信号列表。

const char* my_sys_signame[] = { NULL, "HUP", "INT", ...  "USR2" };


最后,如果您必须检查是否存在sys_signame,您唯一的选择是执行以下操作:

#ifdef NSIG
// have sys_signame
#else
// does not have sys_signame
#endif