如何在C ++的#define中扩展'#'?

时间:2013-12-22 07:32:50

标签: c++

我想在调试时暴露私人成员,如下所示:

class A {
public:
  void f1();
#ifndef NDEBUG
public:
#else
private:
#endif
  void f2();
};

我想使用像:

这样的宏
#define PUBLIC public:
#define PRIVATE \
\#ifndef NDEBUG \
public: \
\#else \
private: \
\#endif

但是,我知道这不起作用......

你们推荐什么? Thx提前。


编辑01:

我的目的不是debug我的代码,而是测试私有成员函数。

2 个答案:

答案 0 :(得分:6)

根据PRIVATE

,简单地定义NDEBUG
#ifndef NDEBUG
#define PRIVATE public
#else
#define PRIVATE private
#endif

答案 1 :(得分:4)

你不能,预处理器没有反射。但你可以正常(呃,可以说是......)这样做:

#ifndef NDEBUG
#define PRIVATE public:
#else
#define PRIVATE private:
#end