gpt4 book ai didi

更改依赖于变量的函数调用

转载 作者:行者123 更新时间:2023-11-30 17:38:31 26 4
gpt4 key购买 nike

编辑:我只是使用案例语句,我不知道是否有更简单的方法来做到这一点

好的,所以我想调用 47 个不同的宏之一,这些宏的区别仅在于名称的更改如果输入 0,则调用“宏”AD0_ADCOMP0,而 31 则为 AD0_ADCOMP31

这将是一个汇编程序,我想设置给定寄存器号的某个位。

声明 AD0_ADCOMP0 = 0x000;可行,但如何将变量添加到宏中?

我尝试这样做

Storelocation = &AD0_ADCOMP0 + offset
Storelocation = 0x000

但它的功能与原来不同。

AD0_ADCOMP0  = 0x000;

将0x000存储在寄存器的内存位置。我觉得这很简单,但我看不到它。

结构是

typedef union
{
struct
{
__HWORD hword;
} ADCOMP;
struct
{
__HWORD hword;
} ADCOMPB;
} __ADCOMP;



#ifdef __IO_DEFINE
#pragma segment DATA=IO_AD0,attr=IO,locate=0x1304
#endif


#define AD0_ADCOMP0 (IO_AD0._ADCOMP0.ADCOMP.hword)

最佳答案

boost 可以生成多个case:

#include <boost/preprocessor/repetition/repeat.hpp>
#define DECL(z, n, _data) case n: AD0_ADCOMP ## n = 0x000; break;

...

int input = ...;

switch(input) {
BOOST_PP_REPEAT(47, DECL,)
}

变成:

switch(input) {
case 0:
AD0_ADCOMP0 = 0x000;
break;

case 1:
AD0_ADCOMP1 = 0x000;
break;

...
case 46:
AD0_ADCOMP46 = 0x000;
break;

}

关于更改依赖于变量的函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22104177/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com