gpt4 book ai didi

c - malloc qnx 以意想不到的方式工作

转载 作者:太空宇宙 更新时间:2023-11-04 08:51:35 26 4
gpt4 key购买 nike

我编写了一个在 Linux 下编译和运行的程序。它工作正常。然后我被迫将它移植到 QNX。

我做了,当我试图在那里编译它时(qnx with momentics)我得到了一个神秘的错误:

timer_t * timer = malloc(sizeof(timer_t)); <---- invalid conversion from 'void*' to 'timer_t*'

这里我得到另一个(我猜)类似类型的错误:

static void signalor(int sig, siginfo_t *si, void *uc)
timer_t *tidptr;
tidptr = si->si_value.sival_ptr;<----- invalid conversion from 'void*' to 'timer_t*'

有谁知道我为什么会收到这个错误?或者如何解决?

提前致谢。

最佳答案

致谢@rici,他很久以前就回答了这个问题,但为了将其移至关闭状态,以下代码解决了该问题:

#include <malloc.h>
#include <time.h>
#include <signal.h>

int main() {
timer_t * timer = (timer_t*)malloc(sizeof(timer_t));

siginfo_t si = {0};
timer_t *tidptr;

tidptr = (timer_t*)si.si_value.sival_ptr;

return 0;
}

bash-3.2$ ntoarmv7-g++ tst.c -Wall
tst.c: In function 'int main()':
tst.c:7: warning: unused variable 'timer'
bash-3.2$

这个问题正如上面的编译器和 rici 所解释的那样:c++ 不允许分配不兼容类型的指针。原始代码可以使用 gcc(而不是 g++)愉快地构建。

关于c - malloc qnx 以意想不到的方式工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19481564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com