使用宏来减少代码重复
reduce code duplication using macros
本文关键字:代码 更新时间:2023-10-16
我想知道是否有人可以给我一个指针,以减少编码时的重复。
im需要多次调用功能以填充结构,例如:
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 中很虚弱,对宏的新手,但是有人会知道一种解决这个问题的方法吗?
谢谢您的时间
您可以做这样的事情,尽管我不知道它真正为您买了什么。
#define QuickFindValue(NAME, TYPE, FUNCTION)
TYPE *NAME##Value = Insufficient::FindValue(#NAME);
if (NAME##Value == NULL) { FUNCTION; }
您会这样使用它:
QuickFindValue(C, TPoint, {
char *c = CValue;
// Do stuff..
});
最近我遇到了同样的问题,我不确定您在输入中使用哪种来源。人格,我使用XML作为输入。然后,我有一个解析XML的构建器类,可以使用Parser中的数据来调用Factory Funciton,以在C 中构建每个结构。
我认为宏观或模板不会有任何帮助(或者这是一个不好的解决方案)。请注意,如果您想更改而不进行重新编译,则外部资源(例如XML)都是不错的。
最佳
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 此代码是否违反一个定义规则
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 为什么在这个代码结束循环中没有得到结束
- 在c代码之间共享数据的最佳方式
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值