我想知道是否有人可以在编码时给我一个减少重复的指针。
我需要多次调用函数来填充结构,例如:
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 ++中的弱者,也是宏的新手,但是有人知道让宏解决这个问题吗?
感谢您的时间
答案 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..
});