使用宏减少代码重复

时间:2012-11-08 22:46:42

标签: c++

我想知道是否有人可以在编码时给我一个减少重复的指针。

我需要多次调用函数来填充结构,例如:

typedef struct {
    uint16_t u16_a;
    bool b_org;
    char* c_c;
    uint16_t u16_d;

} TEntry;

我需要使用函数调用填充这些值的每个值,尽管返回值不同,所有函数都使用相同的函数。 一个宏是否足以以某种方式创建模板,因此返回类型将取决于特定参数(“string”)

例如:

Trrelevant::Trrelevant()
{
    TPoint* u_apoint = Insufficient::FindValue("A");
    if (u_bpoint != NULL) {
        int a = u_apoint;
    }

    TPoint* p_apoint = Insufficient::FindValue("borg");
    if (p_bpoint != NULL) {
        bool b = p_bpoint;
    }


    TPoint* p_cpoint = Insufficient::FindValue("C");
    if (etc != NULL) {
        char* c = etc;
    }

    TEct* etc = Insufficient::FindValue("ETC");
    if (etc != ETC) {
        etc = etc;
    }

    TEntry entry = {a,
                    b,
                    c,
                    etc};
}

此代码未编译或准确,我只是想说明一下。我是C ++中的弱者,也是宏的新手,但是有人知道让宏解决这个问题吗?

感谢您的时间

1 个答案:

答案 0 :(得分:0)

你可以做这样的事情,虽然我不知道它真正给你买了什么。

#define QuickFindValue(NAME, TYPE, FUNCTION)             \
     TYPE *NAME##Value = Insufficient::FindValue(#NAME); \
     if (NAME##Value == NULL) { FUNCTION; }

你会像这样使用它:

QuickFindValue(C, TPoint, { 
  char *c = CValue;
  // Do stuff..
});