标签: c

是否有可能以编程方式在共享库中获取函数的签名?

标题很清楚,我们可以通过dl_open等方式加载库.

但是我怎样才能获得功能的签名呢?

c shared-libraries

12
推荐指数
3
解决办法
7975
查看次数

如何在c/c ++中定义常量数组?

如何在C/C++中定义常量1维或2维数组?我处理嵌入式平台(Xilinx EDK),因此资源有限.

我想在第三方头文件中写一些类似的东西

#define MYCONSTANT 5
Run Code Online (Sandbox Code Playgroud)

但是对于阵列.喜欢

#define MYARRAY(index) { 5, 6, 7, 8 }
Run Code Online (Sandbox Code Playgroud)

最常见的方法是什么?

c c++ arrays const

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

是否有任何可用的python路径查找库?

我正在使用python中的实时等距RPG,并希望将移动设备作为平台.我遇到困难的主要领域是我的寻路.我尝试了一些算法,包括A*和一些调整,以更好地适应我正在使用的地图.

我对我的算法的结果感到满意 - 它们在确定性的同时给出了一些智能的错觉,并且在任一方向上都是一致的,这样两个以两个角色为目标的角色就会在中间碰撞.

我的问题是虽然PC上的结果看起来很好,我可以要求所有的处理能力,在我的手机上它是另一个故事,并且在计算算法时经常会有第二次或更多延迟.出于这个原因,我正在考虑用C编写的性能最密集的代码为此编写一个库,但是如果有一个现有的解决方案,或者更好的方法我可以做到这一点,我会全力以赴.

我偶然发现了python-pathfinding,但这似乎比我为自己的用例构建的更慢.


我的用例:

我的地图是从水平建造的,这些水平被墙壁(可见或不可见)包围,并且必须通过门(可见或不可见)链接.

我目前的方法是有两种不同的算法:

  • 在一个房间内,我将单个图块搜索为节点,每个边界作为等成本边缘,在目标位置的方向上使用深度优先

  • 在每个门都是节点的房间之间.使用第一算法计算通过房间(从门到门)的最短可能路径,并将其存储在哈希表中作为这些节点之间的边缘成本.然后计算可以遍历从一个节点到另一个节点的边集,并将其存储在散列表中,并且不允许在同一路径中多次包含相同的边.

我在启动时产生了一个单独的过程,它使用第一个算法生成第二个算法的图形,这解决了我的许多问题,房间往往相对较小,因此保留了即时路径查找的惩罚低于其他情况,然后长距离:

  • 第一种算法用于计算从当前位置到当前房间中每扇门的距离.
  • 第一种算法用于计算目标房间中每扇门到目标位置的距离.
  • 第二种算法的输出用于获取房间之间的路径集
  • 这些费用加到了第一扇门和最后一扇门的费用上
  • 该组解决方案按成本分类,使得相同成本的路径顺序始终保持一致
  • 选择解决方案集中的第一项.

c python performance path-finding

12
推荐指数
1
解决办法
3944
查看次数

C#和C中挥发性的差异

c#和c中volatile的区别是什么?我在一次采访中被问到这个问题.

c c#

12
推荐指数
1
解决办法
1093
查看次数

为什么FILE全部大写如FILE*?

这对我来说似乎很奇怪,其他大多数都是小写的.

有一些历史原因吗?

c history

12
推荐指数
2
解决办法
2576
查看次数

long long和long int之间有什么区别

我知道long和int之间的区别但是"long long"和"long int"之间有什么区别

c c++ linux type-conversion

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

无法在gdb中重现段错误

我在运行项目时遇到了段错误.每次我在gdb中运行程序时,段错误都会消失.这种行为不是随机的:每次我在shell中运行它都会出现段错误,每次我在gdb中运行它时,段错误都会消失.(我确实使用-g重新编译).

所以在我开始在代码中的任何地方疯狂添加printfs之前,我想知道一些事情:

  • 这种行为常见吗?
  • 解决这个问题的最佳方法是什么?

我不知道测试是否可以编写脚本,因为我的应用程序是交互式的,并且在特定的用户输入上崩溃.

我没有在这里粘贴我的代码,因为它太长了.但如果有人有兴趣帮忙,请点击这里:https: //github.com/rahmu/Agros

c gdb

12
推荐指数
1
解决办法
5205
查看次数

如何正确地将unsigned char数组转换为uint32_t

所以,我正在尝试将unsigned chars 数组转换为a uint32_t,但每次都会得到不同的结果:

unsigned char buffer[] = {0x80, 0x00, 0x00, 0x00};;
uint32_t num = (uint32_t*)&buffer;
Run Code Online (Sandbox Code Playgroud)

现在,我一直收到这个警告:

警告:初始化从指针生成整数而不进行强制转换

当我改变num*numi 时,我没有得到那个警告,但这实际上并不是真正的问题(更新:嗯,现在我认为它们可能是相关的.),因为每次运行代码都有不同的结果.其次num,一旦它正确投射,应该是128,但是如果我需要改变缓冲区的字节顺序,我可以设法自己做,我想.

谢谢!

c casting

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

**argv参数的最大长度

在类似POSIX的系统上,命令行参数的最大长度是多少?

为了澄清,我正在寻找每个命令行参数的最大长度,而不是最大参数数.

c posix

12
推荐指数
1
解决办法
6106
查看次数

C比较指针(用字符)

晚上好,我有2个函数,每个函数都接受一个指向char的指针作为参数:

char pointer[255];
func1(char* pointer)
{
...
memcpy(pointer,some_char,strlen(something));
return;
}
func2(char* pointer)
{
...
if (pointer==someother_char) exit(0); //FAILs
//also I have
if(pointer==someother_pointer2char); // FAILs
}
Run Code Online (Sandbox Code Playgroud)

现在我尝试了strstr,strcmp等......不起作用.想尝试memcmp,但我没有静态len.因为我必须将char*与charchar*比较为char*我需要两个解决方案吗?

那么,如何以最短的方式比较这些指针(实际上是指针)?

谢谢.

编辑

感谢wallacer和Code Monkey现在用于char*to char比较我使用以下:

func1(char* ptr){
char someother_char[255];
char *ptr_char = NULL; //I have to strcmp a few values so this is why I initialize it first
... 
ptr_char = someother_char;
if (strcmp(ptr,ptr_char) == 0) //gtfo and it does...
...
ptr_char = some2nd;
if(strcmp... …
Run Code Online (Sandbox Code Playgroud)

c string pointers compare

12
推荐指数
1
解决办法
6万
查看次数