小编Adr*_*ciu的帖子

C中的MISRA增量

在调试一些嵌入式代码时,我遇到了类似这样的事情:

buffPtr = &a[5];
buffEndPtr = &a[10];

while (buffPtr != buffEndPtr) 
{ 
    *buffPtr = 0xFF; 
    buffPtr  = &buffPtr[1];         /*  MISRA improvement for: buffPtr++ */ 
}
Run Code Online (Sandbox Code Playgroud)

为什么这个结构会改进(*buffPtr)++?

c embedded pointers misra

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

验证任何集中是否存在任何值

如何使用if语句验证任何变量中是否包含任何值?我正在寻找类似的东西:

if "foo","bar","spam","eggs" in test1,test2:
Run Code Online (Sandbox Code Playgroud)

如果在任何test1,test2变量中找到四个值中的任何一个,则返回true.test1,test2应该是什么类型的?

稍后编辑:如果我有一个列表,那将会是这样的:

test1=['foo','abc','def']
if {'foo', 'bar', 'spam', 'eggs'} in test1
Run Code Online (Sandbox Code Playgroud)

python

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

为什么我会收到此错误?无法从<brace-enclosed initializer list>转换为'std :: vector <>'

我正在使用支持C++ 11的ARM微控制器和编译器

我有一个类描述如下:

class commands 
{
public:
    string cmd_str;
    void (*fktPtr)(void);
};
Run Code Online (Sandbox Code Playgroud)

diag对象是Diag类的一部分

class Diag
{
public:
void reset(void);
}

Diag diag;
Run Code Online (Sandbox Code Playgroud)

切换功能是代码中的独立功能:

void toggle_pin(void);
Run Code Online (Sandbox Code Playgroud)

然后我定义了一个名为cmdlist的命令向量:

vector<commands> cmdlist = {

{"togg",     toggle_pin }, // this works
{"rst",      diag.reset}, // this gives an error. why ?
{"rst1",     [](){diag.reset();}}, // this also works
}
Run Code Online (Sandbox Code Playgroud)

错误:

main.cpp:81:1: error: could not convert '{{"togg", toggle_pin}, {"rst", diag.Diag::reset}}, {"rst1",<lambda closure object><lambda()>{}} from '<brace-enclosed initializer list>' to 'std::vector<commands>'
Run Code Online (Sandbox Code Playgroud)

为什么初始化列表不支持来自对象的方法,而是支持常规函数/ lambda函数?

c++ c++11

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

标签 统计

c ×1

c++ ×1

c++11 ×1

embedded ×1

misra ×1

pointers ×1

python ×1