常量、变量做函数参数,在变量不变情况下感觉没区别。

2020-01-12 17:23发布

本帖最后由 neutronlmk 于 2019-8-21 20:17 编辑

常量做参数
  1. void FT25Hxx_EraseSector(const uint32_t fu32_Address)
  2. {
  3.     FT25Hxx_WriteEnable();                          //FT25Hxx写使能
  4.     FT25Hxx_CS = 0;                                 //使能器件
  5.     SPI_WriteReadData(0x20);
  6.     SPI_WriteReadData((uint8_t)(fu32_Address>>16)); //发送地址
  7.     SPI_WriteReadData((uint8_t)(fu32_Address>>8));
  8.     SPI_WriteReadData((uint8_t)(fu32_Address));
  9.     FT25Hxx_CS = 1;                                 //取消片选
  10.     FT25Hxx_WaitBusy();                             //等待写入结束
  11. }
复制代码变量做参数:
  1. void FT25Hxx_EraseSector(uint32_t fu32_Address)
  2. {
  3.     FT25Hxx_WriteEnable();                          //FT25Hxx写使能
  4.     FT25Hxx_CS = 0;                                 //使能器件
  5.     SPI_WriteReadData(0x20);
  6.     SPI_WriteReadData((uint8_t)(fu32_Address>>16)); //发送地址
  7.     SPI_WriteReadData((uint8_t)(fu32_Address>>8));
  8.     SPI_WriteReadData((uint8_t)(fu32_Address));
  9.     FT25Hxx_CS = 1;                                 //取消片选
  10.     FT25Hxx_WaitBusy();                             //等待写入结束
  11. }
复制代码编译输出大小不变,使用的ram也不变。
这该如何决择?

增加一个:
  1. void FT25Hxx_ReadRDID(uint8_t *fu8p_SaveArr)
  2. {
  3.     uint8_t u8_i;
  4.    
  5.     FT25Hxx_CS = 0;                                 //使能器件
  6.     SPI_WriteReadData(0x9F);                        //发送读取RDID命令
  7.     SPI_WriteReadData(0x00);                        //发送24bit地址  
  8.     SPI_WriteReadData(0x00);
  9.     SPI_WriteReadData(0x00);
  10.     for(u8_i=0;u8_i<3;u8_i++)
  11.     {
  12.         fu8p_SaveArr[u8_i]=SPI_WriteReadData(0xFF); //循环读数
  13.     }
  14.     FT25Hxx_CS = 1;                                 //取消片选
  15. }
复制代码
fu8p_SaveArr是否有必要声明为 uint8_t *const fu8p_SaveArr ?
我试过编译OK。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
tuy0326
1楼-- · 2020-01-13 15:35
哈哈,真逗
Jmhh247
2楼-- · 2020-01-13 16:57
你好,金牌会员。。。这能说明系统性的看完一本C语言书的必要性吗