【发布时间】:2017-10-27 15:05:04
【问题描述】:
我想使用#define 来锁定/解锁互斥锁。但是在我只使用单线程的其他平台上,我想禁用锁定和解锁并且什么都不做。
在这种情况下,如何在我不使用该功能的应用上安全地定义它?
例如,
#define SYS_LOCK sys_lock();
#define SYS_UNLOCK sys_unlock();
这是我在支持多线程的平台上使用的。
但我想在其他平台上禁用它。
这样定义是否安全,所以调用 SYS_LOCK 和 SYS_UNLOCK 什么都不做?
#define SYS_LOCK
#define SYS_UNLOCK
【问题讨论】:
-
是的,它是安全的。但是为什么你不想使用函数呢?
-
是的。那应该完全没问题。这也是通常标记头文件以避免重复或递归包含的方式。
-
定义末尾的分号格式错误。对于你的问题,我建议
{} -
最好将它们定义为
#define SYS_LOCK() sys_lock()和#define SYS_LOCK()。这将使它们在代码中的使用看起来更自然。
标签: c++ preprocessor