小编lon*_*ger的帖子

为什么全局变量在单线程,非os,嵌入式应用程序中是坏的

我看到使用全局变量的大多数异议都有意义,因为它们涉及多线程,线程安全等问题.

但是在一个小的,单线程的,非操作系统的情况下,你有什么异议?就我而言,如果重要的话,我正在用"C"编写我的嵌入式系统.我也是该产品的唯一开发人员.

为什么消除全局变量会使我的代码更好?

(在阅读了几个响应之后,我意识到我也应该指出这个系统没有动态内存分配(例如malloc).所有内存都是在编译时静态分配的.)

c embedded global-variables

32
推荐指数
6
解决办法
2万
查看次数

C Typedef和Struct问题

这两个声明之间的区别是什么,并且优先于另一个?

typedef struct IOPORT {  
    GPIO_TypeDef* port;  
    u16           pin;  
} IOPORT;  

typedef struct {  
    GPIO_TypeDef* port;  
    u16           pin;  
} IOPORT;  
Run Code Online (Sandbox Code Playgroud)

c struct typedef namespaces

10
推荐指数
3
解决办法
4487
查看次数

如何管理特殊情况和启发式

我经常使用基于特定定义算法的代码.这得到了很好的评论,似乎是正确的.对于大多数数据集,算法运行良好.

但随后边缘情况,特殊情况,启发式方法被添加以解决特定数据集的特定问题.随着特殊情况的数量增加,评论越来越模糊.我担心在一年左右的时间内回过头来查看这段代码并试图记住为什么会添加每个特殊的特例或启发式.

我有时希望有一种方法可以在源代码中嵌入或链接图形,所以我可以有效地说,"在这个数据集的图形中,这个特殊功能导致例程不正确地触发,所以这就是为什么这个代码被添加".

处理这种情况的最佳做法是什么?

似乎总是需要特殊情况来处理这些异常/边缘情况.如何管理它们以使代码保持相对可读性和可理解性?

考虑一个处理照片特征识别的例子(不完全是我正在研究的,但类比似乎很合适).当我找到一般算法失败并且需要特殊情况的特定图片时,我尽可能地在评论中记录该信息(或者如下面的某人建议的描述性函数名称).但是经常缺少的是指向展示相关行为的特定数据文件的永久链接.虽然我的评论应该描述这个问题,并且可能会说"请参阅文件foo.jp以获取此行为的示例",但此文件永远不会出现在源代码树中,并且很容易丢失.

在这种情况下,人们是否会将数据文件添加到源树中以供参考?

c c++ literate-programming

6
推荐指数
2
解决办法
913
查看次数

如何使用mathplotlib复制这个简单的matlab绘图功能?

这是一个简单的matlab脚本来读取csv文件,并生成一个图(我可以根据需要使用鼠标放大).我想看一个如何在python和mathplotlib中完成此操作的示例.

data = csvread('foo.csv');    % read csv data into vector 'data'
figure;                       % create figure
plot (data, 'b');             % plot the data in blue
Run Code Online (Sandbox Code Playgroud)

一般来说,我见过的mathplotlib教程中的示例将创建一个静态图形,但它不是交互式"可缩放的".任何python专家都会关心分享一个等价物吗?

谢谢

python matlab

5
推荐指数
1
解决办法
623
查看次数

预处理器宏替换

#define LED1_ON() { /* twiddle port bit */ }
#define LED2_ON() { /* twiddle port bit */ }
//  ...
#define LED9_ON() { /* twiddle port bit */ }

#define LED_ON(x) LED##x_ON()
Run Code Online (Sandbox Code Playgroud)

我想使用上面的代码(或类似的东西)来(例如)LED_ON(1)调用宏LED1_ON(),或LED_ON(2)调用宏LED2_ON().

我相信有可能让cpp这样做,但显然我没有正确的语法.有没有人知道使这成为可能的语法?

在我调用的行上LED_ON(2),gcc给出了错误消息:

undefined reference to `LEDx_ON'
Run Code Online (Sandbox Code Playgroud)

c macros c-preprocessor

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