无法理解工作代码与破损代码之间的区别

珍妮娅·伊凡诺夫(Jenia Ivanov)

我需要初始化一个Posix计时器,但它确实可以工作,但是有点奇迹。我不明白工作和代码之间的区别给我分段错误。

这是create_timer函数的标头:

int timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid);

请告诉我版本2和版本3有什么区别?

另外,鉴于3可行,版本1甚至如何编译?

显然,timer_create的第三个参数在v1和v3中是不同的,但是它们都可以编译。

此代码失败:(但编译)

main():
timer_t *tidlist;
tidlist = calloc(2, sizeof(timer_t));
initialize_timer(tidlist[0], 2);

int initialize_timer(timer_t *tid, int seconds){  
    if (timer_create(CLOCK_REALTIME, &sev, tid) == -1) <----- seg fault here. but it should not even compile because the working version accepts the **timer_t as argument.

这甚至不编译:(即使它完全相同的东西是可行的)

main():
    timer_t *tidlist;
    tidlist = calloc(2, sizeof(timer_t));
    initialize_timer(tidlist[0], 2);//initilize timer for producer

initialize_timer(timer_t *tid, int seconds):
    if (timer_create(CLOCK_REALTIME, &sev, &tid) == -1) <------- type error for 3 arg: incompatible pointer type.

此代码有效:

main():
    timer_t *tidlist;                                                  
    tidlist = calloc(2, sizeof(timer_t)); 
    initialize_timer(tidlist, 2);//initilize timer for producer

int initialize_timer(timer_t *tidlist, int seconds){
    if (timer_create(CLOCK_REALTIME, &sev, &tidlist[0]) == -1) 

提前致谢。

卡尔·诺鲁姆
  1. 请告诉我版本2和版本3有什么区别?

    版本2具有以下行和定义:

    initialize_timer(timer_t *tid, int seconds):
        if (timer_create(CLOCK_REALTIME, &sev, &tid) == -1)
    

    tidtimer_t *&tid也是timer_t **,并且与timer_create()预期不兼容

    版本3具有:

    int initialize_timer(timer_t *tidlist, int seconds){
        if (timer_create(CLOCK_REALTIME, &sev, &tidlist[0]) == -1) 
    

    tidlisttimer_t *,这样&tidlist[0]一个timer_t *,预计和作品。&tidlist[0]等同于tidlist

  2. 另外,鉴于3可行,版本1甚至如何编译?

    没有警告,版本1不会编译。注意他们。您有以下代码:

    timer_t *tidlist;
    tidlist = calloc(2, sizeof(timer_t));
    initialize_timer(tidlist[0], 2);
    

    tidlisttimer_t *,那么tidlist[0]timer_t,这是不是有什么initialize_timer期待。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法理解工作代码与损坏代码之间的区别

来自分类Dev

无法理解代码片段

来自分类Dev

无法理解部分代码

来自分类Dev

无法理解python代码

来自分类Dev

无法理解混淆的C代码

来自分类Dev

无法理解代码/函数调用

来自分类Dev

无法理解连接建立代码

来自分类Dev

无法理解Makefile中的这段代码

来自分类Dev

无法理解以下熊猫代码

来自分类Dev

伪代码无法理解行

来自分类Dev

无法理解此代码的输出?

来自分类Dev

无法理解JAVA代码行

来自分类Dev

无法理解混淆的C代码

来自分类Dev

无法理解代码/函数调用

来自分类Dev

无法理解部分代码(位操作)

来自分类Dev

无法理解这行代码的C ++

来自分类Dev

无法理解这段C ++代码

来自分类Dev

我无法理解以下代码

来自分类Dev

无法理解 ruby 代码片段

来自分类Dev

无法理解为什么这小段代码无法正常工作

来自分类Dev

无法理解为什么这小段代码无法正常工作

来自分类Dev

我无法理解这段代码(对于 React/Redux)是如何工作的

来自分类Dev

返回一个枚举,无法理解代码行

来自分类Dev

无法理解Java 1.7 PopupFactory源代码

来自分类Dev

无法理解字符串置换Java代码

来自分类Dev

Phalcon DI phpStorm IDE无法理解我的代码

来自分类Dev

无法理解此递归乌龟python代码

来自分类Dev

无法理解此代码中使用的for循环

来自分类Dev

无法理解此代码中变量的范围