我有一个非常小的程序,我希望能够在多个平台上编译。某些平台在sys_signame
中提供signal.h
,但其他平台则不提供,我需要提供替代方案。使用#define
/ #ifndef
不是一个选项:这些是平台标题,而不是我的,并且似乎没有任何特定的#define
行与{{1跨越多个平台。
我不想为每个平台添加特殊情况。这是一个非常小的程序,只有少数人会看到它,它不会在任何生产环境中使用。我还不知道它将用于哪些操作系统。我不值得花时间彻底测试它。对于更重要的程序,我会保存类似的东西。
如何测试全局变量的存在,例如sys_signame
?
答案 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