小编t3m*_*3m2的帖子

有没有办法将多个值作为C中单个定义的宏值传递给宏函数?

我想在全局标头中将引脚定义声明为一条简单的行,例如:

#define STATUS_LED B,7
Run Code Online (Sandbox Code Playgroud)

然后,我想将此引脚定义传递给以上功能:

CMBset_out(STATUS_LED);
Run Code Online (Sandbox Code Playgroud)

我不知道该如何处理-MY_PIN格式正确,可以在预编译阶段替换。

#define CMBsbi(port, pin) (PORT##port) |= (1<<pin)
#define CMBset_out(port,pin) (DDR##port) |= (1<<pin)
// define pins 
#define STATUS_LED B,7
Run Code Online (Sandbox Code Playgroud)

Then, I want to pass this pin definition to function above (hw_init_states() is declared in the same header file called from main C file):

// runtime initialization
void hw_init_states(){
#ifdef STATUS_LED
    CMBset_out(STATUS_LED);
#endif
}
Run Code Online (Sandbox Code Playgroud)

But I get a compilation error:

Error   1   macro "CMBset_out" requires 2 arguments, but only 1 given   GENET_HW_DEF.h  68  23  Compass …
Run Code Online (Sandbox Code Playgroud)

c macros gcc avr

13
推荐指数
2
解决办法
309
查看次数

将javascript中的数组更改为更简单的对象

我有一个简单的JSON,其中包含一个包含其他对象等的数组,如下所示:

languagePack:
[
  {
    'key': 'Username',
    'value': 'Benutzername',
    'group': 'default'
  },
  {
    'key': 'Password',
    'value': 'Passwort',
    'group': 'default'
  }
]
Run Code Online (Sandbox Code Playgroud)

但是我真正想要的是这样的对象:

languagePack: 
{
    'Username': 'Benutzername',
    'Password': 'Passwort'
}
Run Code Online (Sandbox Code Playgroud)

因此,我想将数组简化为数组甚至对象内部的简单键值对(键是唯一的)。有谁知道如何通过一些很棒的数组函数来减少这种情况?我只为每个对象想出了一个类似的东西,并为属性建立了“手工”对象的属性,但我记得数组中有一些很棒的东西,例如“ reduce”,散布运算符(...),map,一些,等等

我尝试了类似的东西:

var temp = this.languagePack.map(([key, value]) => ({key,value}))
console.log(temp)
Run Code Online (Sandbox Code Playgroud)

但这只会给我一条错误消息 TypeError: Invalid attempt to destructure non-iterable instance

编辑:所有三个答案都工作正常。谢谢。

javascript arrays

13
推荐指数
3
解决办法
682
查看次数

容器总是可迭代的吗?

在此处输入图片说明

根据此图,是否存在容器不可迭代的情况?

python containers iterable

3
推荐指数
1
解决办法
266
查看次数

if语句中的Python生命变量

有人能告诉我在哪里可以找到有关if语句中变量生命周期的一些信息吗?在这段代码中:

if 2 < 3:
   a = 3
else:
   b = 1
print(a)
Run Code Online (Sandbox Code Playgroud)

它打印变量a。但在我看来,它是if语句的局部变量。在 C infacts 中,如果我aif语句中创建变量,它会给我一个错误。

我认为这种行为是因为 Python 是一种解释型语言。我对吗?

python

0
推荐指数
1
解决办法
517
查看次数

标签 统计

python ×2

arrays ×1

avr ×1

c ×1

containers ×1

gcc ×1

iterable ×1

javascript ×1

macros ×1