小编nce*_*rar的帖子

是否可以#include .c源文件以获得嵌入式C代码的可维护性?

我不是专业的C程序员,我知道包括.c来自另一个的源文件被认为是不好的做法,但我认为它有助于可维护性.

我有一个包含大量元素的大结构,我#define用来保存索引.

#define TOTO_IND 0 
#define TITI_IND 1 
…
#define TATA_IND 50

static const MyElements elems [] = {
    {"TOTO", 18, "French"},
    {"TITI", 27, "English"},
    ...,
    {"TATA", 45, "Spanish"}
}
Run Code Online (Sandbox Code Playgroud)

因为我需要从索引访问结构,所以我需要保持#define和结构声明同步.这意味着我必须在正确的位置插入新元素并相应地更新#define.

它容易出错,我不喜欢它(但出于性能考虑,我找不到更好的解决方案).

无论如何,这个文件还包含很多处理这个结构的函数.我还希望保持代码分离并避免全局变量.

为了使事情变得"更容易",我正在考虑将这个"容易出错的定义"转移到.c仅包含此结构的单个源文件中.这个文件将是"危险的小心文件",并将其包含在我的实际"正常功能"文件中.

你怎么看待这件事?包含.c源文件是否有效?还有另一种更好的方法来处理我的结构吗?

c embedded maintainability performance stm32

29
推荐指数
4
解决办法
4266
查看次数

mvn --encrypt-master-password <密码>:选择<密码>的好习惯?应该具备哪种级别的隐私?

我正在学习使用maven密码加密功能,我想知道如何选择参数<password>.有两件事我不明白:

1)mvn --encrypt-master-password foobar总会给出不同的encrypted master password.

由于encrypted master password总是不同,我只看到两种可能性:

  1. 一个本地属性存储在某个地方,以便它可以用来解密它encrypted master password来获取master password.这意味着我们encrypted server passwords只能在本地使用.
  2. 什么都没有存储,master password没用,根本没有关系.

所以,我的问题是:

什么存储在本地?我的master password保持安全吗?有没有第三种可能性我没想到?

2)在maven网站上,写道:

另请注意,加密密码可由具有主密码和设置安全文件的人解密.如果您希望可能检索settings.xml文件,请保持此文件的安全(或单独存储).

如果settings security file是要保护的东西,为什么我要打扰选择一个强大的主密码?我不能只使用foobar并保持settings security file安全吗?

此外,看起来有两个文件(settings security filesettings file)的人不需要master password连接到maven服务器.他可以在不知道密码的情况下使用我们的身份 在master password"只"需要解密servers passwords(让他们纯文本).但话说回来,保护settings security file应该是应该走的路,而且master password仍然无用.

我的问题:

这有多重要master password …

password-protection password-encryption maven password-generator

14
推荐指数
1
解决办法
6082
查看次数

"&"或",":A <T extends I1&I2>和A <T extends I1,I2>之间有什么区别?

多个通用接口分隔符:","或"&"

我一直在使用,A<T extends I1, I2>但今天,我看到了A<T extends I1 & I2>.这两种表示法有什么区别?

它有不同的含义吗?目的?

java generics inheritance multiple-inheritance separator

8
推荐指数
1
解决办法
145
查看次数

位掩码生成以最小化1的数量

为了探索一些解决方案,我需要产生所有可能性.我是通过使用位屏蔽来实现的,如下所示:

for (long i = 0; i < 1L << NB; i++) {
    System.out.println(Long.toBinaryString(i));
    if(checkSolution(i)) {
        this.add(i); // add i to solutions
    }
}
this.getBest(); // get the solution with lowest number of 1
Run Code Online (Sandbox Code Playgroud)

这让我去探索(如果NB = 3):

000
001
010
011
100
101
110
111
Run Code Online (Sandbox Code Playgroud)

我的问题是最好的解决方案是数量最少的那个1.所以,为了在我找到解决方案后立即停止搜索,我希望有一个不同的顺序并生成这样的东西:

000
001
010
100
011
101
110
111
Run Code Online (Sandbox Code Playgroud)

这将使搜索速度更快,因为我可以在获得第一个解决方案后立即停止搜索.但我不知道如何更改循环以获得此输出...

PS:NB未定义......

java algorithm loops

7
推荐指数
1
解决办法
506
查看次数

什么在这个赋值中无效:`Map <String,Object> mObj = new HashMap <String,String []>();`?

在java中,这个赋值有什么问题:

Map<String, Object> mObj = new HashMap<String, String[]>();
Run Code Online (Sandbox Code Playgroud)

我明白了:

error: incompatible types: HashMap<String,String[]> cannot be converted to Map<String,Object>
Run Code Online (Sandbox Code Playgroud)

String[]Object,这应该工作.如果我投射到这样的非参数Map:Map<String, Object> mObj = (Map) new HashMap<String, String[]>();它是有效的,但当然,我得到一个警告,它是脏的.

此外,我觉得我的第一个任务应该有效.

谢谢 !

PS:我不能简单地改变new HashMap<String, String[]>();,new HashMap<String, Object>();因为在现实中,我调用一个返回a的方法,Map<String, String[]>();当然,我不能改变这个方法.再次感谢你.

java dictionary compiler-errors parameterized incompatibletypeerror

4
推荐指数
2
解决办法
3728
查看次数