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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2171|回復: 9
打印 上一主題 下一主題
收起左側

關于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函數 ,我嘗試了直接返回沒有任何區別 ,為什么以前的要弄一個新變量來返回呢?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:752974 發表于 2023-6-5 16:21 | 只看該作者
編譯器優化的問題,再者還有程序設計者的習慣。
回復

使用道具 舉報

板凳
ID:883242 發表于 2023-6-5 16:30 | 只看該作者
作者可能以前是寫C#的,這么寫在c語言里面只能增加最終機器碼的復雜度,沒有任何好處,除非能把這兩個函數聲明成inline函數。
回復

使用道具 舉報

地板
ID:647261 發表于 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;
回復

使用道具 舉報

5#
無效樓層,該帖已經被刪除
6#
ID:879348 發表于 2023-6-5 16:49 | 只看該作者
我也習慣返回局部變量,不會返回全局變量
回復

使用道具 舉報

7#
ID:1045628 發表于 2023-6-5 17:07 | 只看該作者
高級語言的書寫習慣,各種get、set用的飛起
回復

使用道具 舉報

8#
ID:705806 發表于 2023-6-5 17:26 | 只看該作者
Hephaestus 發表于 2023-6-5 16:30
作者可能以前是寫C#的,這么寫在c語言里面只能增加最終機器碼的復雜度,沒有任何好處,除非能把這兩個函數 ...

我們都是純C的好像不能用inline吧
回復

使用道具 舉報

9#
ID:705806 發表于 2023-6-5 17:28 | 只看該作者
sttt300 發表于 2023-6-5 16:39
其實沒怎么看明白你的意思
我說一下返回不返回的區別:
Motor_Time_Max是全局變量,調用Set_Motor_Time() ...

這是一個類似于lib的東西  我找到的源碼就是這樣的 然后能看到可以直接直接使用的就只有Get 和Set函數
回復

使用道具 舉報

10#
ID:705806 發表于 2023-6-5 17:29 | 只看該作者
munuc_w 發表于 2023-6-5 16:21
編譯器優化的問題,再者還有程序設計者的習慣。

好的  謝謝!
回復

使用道具 舉報

11#
ID:883242 發表于 2023-6-5 17:37 | 只看該作者
羽翼之凋零 發表于 2023-6-5 17:26
我們都是純C的好像不能用inline吧

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表