是否存在区分QNX SDP 6与7版本的预处理器变量?
区分QNX SDP版本的预处理器宏
QNX提供了__QNX_VERSION__预处理器宏,可用于区分不同版本的QNX Neutrino(包含SDP 6.x和7.x系列)。这个宏是一个整数,格式为主版本号10000 + 次版本号100 + 补丁版本号,常见版本对应的宏值如下:
- QNX SDP 6.6:
60600 - QNX SDP 7.0:
70000 - QNX SDP 7.1:
70100
你可以通过条件编译最小化代码改动,针对不同版本选择对应实现,示例如下:
// 根据QNX版本适配进程优先级获取逻辑 #if __QNX_VERSION__ >= 70000 // QNX 7.0及以上版本:用SchedGet替代已移除的getprio #include <sys/neutrino.h> int get_process_priority(pid_t pid) { struct sched_param sched_params; if (SchedGet(0, pid, 0, &sched_params, sizeof(sched_params)) == -1) { // 错误处理逻辑 return -1; } return sched_params.sched_priority; } #else // QNX 6.x版本:保留原有getprio实现 #include <sys/resource.h> int get_process_priority(pid_t pid) { return getprio(PRIO_PROCESS, pid); } #endif
注:__QNX_VERSION__由QNX官方编译器(qcc或适配后的GCC)自动定义,无需手动包含特定头文件即可使用。
内容的提问来源于stack exchange,提问作者paxdiablo
相关产品推荐
相关产品推荐

