小编Jud*_*den的帖子

链式哈希表与开放式哈希表

有人可以解释两种实现之间的主要区别(优点/缺点)吗?

对于库,建议使用什么实现?

c hashtable data-structures

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

如何确定最大堆栈使用量?

有哪些方法可用于确定嵌入式/内存受限系统的最佳堆栈大小?如果它太大那么浪费的内存可以在其他地方使用.但是,如果它太小,那么我们得到这个网站的同名......

为了尝试快速启动:Jack Ganssle在"嵌入式系统设计的艺术"中指出,"凭借经验,人们可以学习标准的,科学的方法来计算堆栈的正确尺寸:随机选择尺寸并希望." 任何人都可以做得更好吗?

要求提供更具体的例子.那么,在没有操作系统的情况下使用IAR Embedded Workbench工具链,针对具有2 kB RAM 的MSP430 MCU的C程序怎么样?使用JTAG调试器时,此IDE可以显示堆栈内容和使用情况.

memory embedded stack code-analysis

42
推荐指数
3
解决办法
3万
查看次数

计算LookAt矩阵

我正在编写一个3d引擎,我遇到了DirectX文档中描述的LookAt算法:

zaxis = normal(At - Eye)
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)

 xaxis.x           yaxis.x           zaxis.x          0
 xaxis.y           yaxis.y           zaxis.y          0
 xaxis.z           yaxis.z           zaxis.z          0
-dot(xaxis, eye)  -dot(yaxis, eye)  -dot(zaxis, eye)  l
Run Code Online (Sandbox Code Playgroud)

现在我得到它在旋转方面的工作方式,但我不太明白的是为什么它将矩阵的平移组件放在那些点积上.稍微检查一下,它似乎是根据新基础矢量投影到眼睛/摄像机位置上的一小部分来调整摄像机位置.

问题是为什么需要这样做?它完成了什么?

math 3d graphics projection

37
推荐指数
3
解决办法
8万
查看次数

是在编译时还是在运行时评估常量C表达式?

如果我编写一个使用其他预处理器常量执行操作的#define,那么每次宏在运行时出现时计算的最终值是多少?这取决于编译器中的优化,还是属于标准?

例:

#define EXTERNAL_CLOCK_FREQUENCY    32768
#define TIMER_1_S                   EXTERNAL_CLOCK_FREQUENCY
#define TIMER_100_MS                TIMERB_1_S / 10
Run Code Online (Sandbox Code Playgroud)

将操作十分之三万二千七百六十八每次都发生在运行时我用的是TIMER_100_MS宏?

我想避免以下情况:

#define EXTERNAL_CLOCK_FREQUENCY    32768
#define TIMER_1_S                   EXTERNAL_CLOCK_FREQUENCY
#define TIMER_100_MS                3276
Run Code Online (Sandbox Code Playgroud)

摘要

编译器需要能够计算常量积分表达式,因为它们是在编译时计算数组大小等内容所必需的.但是,标准只说他们"可以" - 而不是"必须" - 这样做.因此,只有脑死亡编译器不会在编译时评估常量积分表达式,但是对非常规编译器的汇编输出的简单检查将验证每种情况.

c compiler-construction optimization standards c-preprocessor

31
推荐指数
7
解决办法
2万
查看次数

删除Qt中的非空文件夹

如何删除Qt中的非空文件夹.

qt qt4

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

在c#中从double中提取尾数和指数

有没有直接的方法从c#(或一般的.NET)中获取双尾数和指数?

我发现这个使用谷歌的例子,但我不确定它会有多强大.二进制表示可以在框架的某些未来版本中进行双重更改吗?

我发现的另一个替代方法是使用System.Decimal而不是double,并使用Decimal.GetBits()方法来提取它们.

有什么建议?

.net c# floating-point

26
推荐指数
1
解决办法
2万
查看次数

如何在graphviz点中为边和节点形状定义双线?

如何使用带有双线的graphviz 来设置边和节点的样式,如下图中的"LEGAL"和"TAX DISC"节点所示?

ER图

diagram entity-relationship dot graphviz

26
推荐指数
2
解决办法
7353
查看次数

如何强制在C中使用未被优化的未使用内存?

微控制器通常需要读取寄存器以清除某些状态条件.在C中是否有可移植的方式来确保在不使用数据的情况下不优化读取?指向内存映射寄存器的指针是否足以声明为volatile?换句话说,以下是否始终适用于标准兼容编译器?

void func(void)
{
   volatile unsigned int *REGISTER = (volatile unsigned int *) 0x12345678;

   *REGISTER;
}
Run Code Online (Sandbox Code Playgroud)

我知道处理这样的功能会遇到编译器相关的问题.所以,在这种情况下,我对便携式设备的定义有点松散.我只是说它会尽可能广泛地使用最流行的工具链.

c embedded microcontroller volatile cpu-registers

24
推荐指数
2
解决办法
4179
查看次数

如何在C中声明一个常量函数指针数组?

我需要声明一个指向函数的指针数组,如下所示:

extern void function1(void);
extern void function2(void);
...

void (*MESSAGE_HANDLERS[])(void) = {
   function1,
   function2,
   ...
};
Run Code Online (Sandbox Code Playgroud)

但是,我希望将数组声明为常量 - 数组中的数据和指向数据的指针.不幸的是,我不记得在哪里放置const关键字.

我假设在这种情况下,实际指针MESSAGE_HANDLERS已经是常量,因为它被声明为数组.另一方面,如果声明如图所示,那么数组中的函数指针是否可以在运行时更改?

c arrays pointers const function-pointers

22
推荐指数
3
解决办法
3万
查看次数

有哪些重构方法可以减少编译代码的大小?

我有一个需要新功能的传统固件应用程序.应用程序的大小已经接近设备的有限闪存容量,并且少数新功能和变量将其推到了边缘.打开编译器优化可以解决这个问题,但客户对这样做很谨慎,因为它们过去曾导致过失败.那么,在重构C代码以产生较小的输出时,需要注意哪些常见的事情?

c memory embedded size optimization

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