C++ 无法理解工作代码和中断代码之间的区别
我需要初始化一个Posix定时器,我让它工作了,但奇迹般地发生了。我不明白工作和代码之间的区别,代码给了我分段错误 这是创建计时器函数的标题:C++ 无法理解工作代码和中断代码之间的区别,c++,c,pointers,posix,C++,C,Pointers,Posix,我需要初始化一个Posix定时器,我让它工作了,但奇迹般地发生了。我不明白工作和代码之间的区别,代码给了我分段错误 这是创建计时器函数的标题: int timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid); 请告诉我第二版和第三版有什么不同 另外,既然3可以工作,那么版本1如何编译呢 显然,timer_create的第三个参数在v1和v3中是不同的,但它们都是编译的 此代码失败:(但已编译) 提前谢谢
int timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid);
请告诉我第二版和第三版有什么不同
另外,既然3可以工作,那么版本1如何编译呢
显然,timer_create的第三个参数在v1和v3中是不同的,但它们都是编译的
此代码失败:(但已编译)
提前谢谢
initialize_timer(timer_t *tid, int seconds):
if (timer_create(CLOCK_REALTIME, &sev, &tid) == -1)
tid
是一个timer\t*
,因此&tid
是一个timer\t**
,这与timer\u create()
所期望的不兼容
第3版有:
int initialize_timer(timer_t *tidlist, int seconds){
if (timer_create(CLOCK_REALTIME, &sev, &tidlist[0]) == -1)
tidlist
是一个计时器*
,因此&tidlist[0]
也是一个计时器*
,这是预期的,并且有效<代码>&tidlist[0]相当于tidlist
timer_t *tidlist;
tidlist = calloc(2, sizeof(timer_t));
initialize_timer(tidlist[0], 2);
tidlist
是一个计时器*
,因此tidlist[0]
是一个计时器
,这不是初始化计时器
所期望的1.您需要学习指针和数组。2.您需要在编译器中显示警告。成功编译并不意味着功能正确。忽略编译器中的警告是一个坏主意。版本1没有警告,它编译时没有警告,因此您没有打开足够的警告。在版本1中,我更改了main()中的第三行,如下所示初始化计时器(&tidlist[0],2);现在它工作了(我把&放在tidlist[0]前面,所以现在它工作得很好。)所以你认为我关闭了警告?这是我的makefile“all:gcc-ggdb-lrt-pthread-o jenia_thread thread.cbla bla bla bla bla”。那不是正确的标志吗?
initialize_timer(timer_t *tid, int seconds):
if (timer_create(CLOCK_REALTIME, &sev, &tid) == -1)
int initialize_timer(timer_t *tidlist, int seconds){
if (timer_create(CLOCK_REALTIME, &sev, &tidlist[0]) == -1)
timer_t *tidlist;
tidlist = calloc(2, sizeof(timer_t));
initialize_timer(tidlist[0], 2);