c中的size\t指針與uint32\t指針

我在使用size_t*uint32_t*時遇到問題

我有一個程序

int main ()
{
  size_t out_length;
  .
  .
  .
  func_1(param_1, ..., &out_length); 
  out_length > some_numberl;
}

func_1(param_1, ... , size_t *length)
{
 .
 .
 .
   *length = 0; 
 .
 .
   *length = to_some_unsigned_number;
}

因為它在main中調用func_1();可以正常工作,但是現在我必須在另一個類似這樣的函數中調用func_1();

   func_2(param_1, ...,uint32_t* output_length)
   {
     
   }

所以程序現在看起來是這樣的

int main ()
{
      size_t out_length;
      .
      .
      .
      func_2(param_1, ..., &out_length); 
      out_length > some_number;
}

func_2(param_1, ...,uint32_t* output_length)
{
    func_1(param_1, ... ,output_length);
    
     //stuff
}

func_1(param_1, ... , size_t *length)
{
     .
     .
     .
       *length = 0; 
     .
     .
       *length = to_some_unsigned_number;
}

所以我的問題是如何適當地獲得output_length的值。我現在讀0s。

如果有人能給我指出正確的方向,我將不勝感激。

? 最佳回答:

不能將f1返回的size_t值直接存儲到f2參數指向的uint32_t變量中,因為類型不同,大小也可能不同。相反,在f2中使用一個中間局部變量,這也給了測試超出范圍條件的機會。對于f2返回到mainuint32_t值也是如此,只是方向相反。

#include <stdlib.h>
#include <stdint.h>

void func_1(size_t* length)
{
    *length = 42;
}

void func_2(uint32_t* output_length)
{
    size_t length;
    func_1(&length);
    if(length > UINT32_MAX) exit(1); // out of range
    *output_length = (uint32_t)length;
}

int main()
{
    size_t out_length;
    uint32_t f2_length;
    func_2(&f2_length);
    out_length = f2_length;
}
主站蜘蛛池模板: 人妻无码一区二区三区| 国产乱码精品一区二区三区香蕉 | 无码国产精品一区二区免费vr| 国产精品无码一区二区在线观 | 国产情侣一区二区三区| 国产成人高清视频一区二区| 亚洲欧洲一区二区三区| 亚洲日本久久一区二区va| 久久国产视频一区| 亚洲爆乳无码一区二区三区| 一区二区国产在线观看| 精品一区二区三区视频| 国产福利电影一区二区三区久久久久成人精品综合 | 国产成人高清精品一区二区三区| 国产一区二区在线| 一区二区三区在线观看| 免费人人潮人人爽一区二区| 亚洲码欧美码一区二区三区| 国产经典一区二区三区蜜芽| 无码日韩精品一区二区三区免费| 日韩人妻无码一区二区三区久久99| 日本成人一区二区三区| 国产午夜精品一区二区三区不卡| 久久一本一区二区三区| 国产在线精品一区二区中文| 亚欧免费视频一区二区三区| 色久综合网精品一区二区| 精品无码国产一区二区三区麻豆| 国产一区二区成人| 亚洲国产av一区二区三区| 日韩精品一区二三区中文| 夜夜爽一区二区三区精品| 亚洲AV永久无码精品一区二区国产| 亚洲国产激情一区二区三区 | 亚洲av乱码一区二区三区| 日本无卡码一区二区三区| 欧美激情一区二区三区成人| 性盈盈影院免费视频观看在线一区| 国内精品视频一区二区三区八戒| 国产中文字幕一区| 国产精品久久久久久麻豆一区|