欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 關于C語言函數返回值的問題 [打印本頁]

作者: 羽翼之凋零    時間: 2023-6-5 15:50
標題: 關于C語言函數返回值的問題
我在查看公司的項目的時候發現有以下代碼

#include "system.h"
static uint16_t Motor_Time_Max = 0;

void Set_Motor_Time(uint16_t time)
{
Motor_Time_Max = time;
}
uint16_t Get_Motor_Time(void)
{
uint16_t time = Motor_Time_Max ;
return time;
}

關于Get函數 ,我嘗試了直接返回沒有任何區別 ,為什么以前的要弄一個新變量來返回呢?

作者: munuc_w    時間: 2023-6-5 16:21
編譯器優化的問題,再者還有程序設計者的習慣。
作者: Hephaestus    時間: 2023-6-5 16:30
作者可能以前是寫C#的,這么寫在c語言里面只能增加最終機器碼的復雜度,沒有任何好處,除非能把這兩個函數聲明成inline函數。
作者: sttt300    時間: 2023-6-5 16:39
其實沒怎么看明白你的意思
我說一下返回不返回的區別:
Motor_Time_Max是全局變量,調用Set_Motor_Time()時,Motor_Time_Max的值可以被其他函數調用,類似于返回了Motor_Time_Max的值
在Get_Motor_Time(void)中,time是局部變量,不加return time的話,time的值是不能被其他函數調用的。加上return time,Get_Motor_Time()可以當成一個數來用。
比如,你可以寫a = Get_Motor_Time() +b;但是不能寫a = Set_Motor_Time() +b;要改成a = Motor_Time_Max+b;
作者: wufa1986    時間: 2023-6-5 16:49
我也習慣返回局部變量,不會返回全局變量
作者: rctty    時間: 2023-6-5 17:07
高級語言的書寫習慣,各種get、set用的飛起
作者: 羽翼之凋零    時間: 2023-6-5 17:26
Hephaestus 發表于 2023-6-5 16:30
作者可能以前是寫C#的,這么寫在c語言里面只能增加最終機器碼的復雜度,沒有任何好處,除非能把這兩個函數 ...

我們都是純C的好像不能用inline吧
作者: 羽翼之凋零    時間: 2023-6-5 17:28
sttt300 發表于 2023-6-5 16:39
其實沒怎么看明白你的意思
我說一下返回不返回的區別:
Motor_Time_Max是全局變量,調用Set_Motor_Time() ...

這是一個類似于lib的東西  我找到的源碼就是這樣的 然后能看到可以直接直接使用的就只有Get 和Set函數
作者: 羽翼之凋零    時間: 2023-6-5 17:29
munuc_w 發表于 2023-6-5 16:21
編譯器優化的問題,再者還有程序設計者的習慣。

好的  謝謝!
作者: Hephaestus    時間: 2023-6-5 17:37
羽翼之凋零 發表于 2023-6-5 17:26
我們都是純C的好像不能用inline吧

c語言都支持inline,但是inline并不是c語言標準關鍵字,所以要查編譯器手冊看看應該怎么寫。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1