精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用C語言實現函數模板

學益得智能硬件 ? 來源:學益得智能硬件 ? 2024-11-09 11:38 ? 次閱讀

C語言能不能實現一個通用的函數,既能完成整數的相加,又能完成浮點數的相加?

放在C語言里面,確實比較困難。

我們先來看看C++的解決方案。

#include 


template 
T add(T x, T y)
{
    return x + y;
}


int main()
{
    std::cout << add(1, 2) << std::endl;  //顯式調用
    std::cout << add(1.1, 2.2) << std::endl;   //隱式調用


    return 0;
}

C++有個重要的概念叫做模板,所謂模板,就是通用的意思。

不管是整數的相加,還是浮點數的相加,代碼都是一樣的,唯一的區別就是類型,參數的類型以及返回值的類型。

那就干脆用一種通用的類型來代替,這個類型暫且就叫 T。

這樣的代碼如果直接拿來編譯,編譯器肯定會提示 T 這種類型不能識別,畢竟它不是標準的類型。

所以還需要在上面加一行代碼,專門告訴編譯器,T 是一種類型。

調用函數的時候,可以顯示指定類型,也可以讓編譯器自己去分析,這就是 C++ 中的函數模板。

單從功能上來說,確實給用戶提供了極大的方便。

再回到C語言上,C語言并沒有函數模板的概念,唯一能接近函數模板的方式,可能就是使用 _Generic 關鍵字。

#include 


int add_int(int x, int y)
{
    return x + y;
}


double add_double(double x, double y)
{
    return x + y;
}


#define ADD(X, Y) _Generic((X), int : add_int(X, Y),
                                double : add_double(X, Y))
                                
int main()
{
    printf("%d
", ADD(1, 2));
    printf("%lf
", ADD(1.1, 2.2));
    
return 0;
}


?Generic 關鍵字可以判斷參數 x 的類型,根據類型去匹配相應的函數,如果不看這些代碼,從使用的角度,確實有點函數模板的意思。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7598

    瀏覽量

    136170
  • 函數
    +關注

    關注

    3

    文章

    4304

    瀏覽量

    62427
  • C++
    C++
    +關注

    關注

    22

    文章

    2104

    瀏覽量

    73487

原文標題:C語言實現函數模板

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何用C語言實現面向對象編程

    、組合、多態等面向對象的功能,但C語言有struct和函數指針。我們可以用struct中的數據和函數指針,以此來模擬對象和類的行為。所以在正式開始設計模式前,先看看如何用
    發表于 07-12 07:24

    C語言實現的泛型函數swap()

    C語言實現的泛型函數swap():交換兩個變量中的數據.
    發表于 01-20 07:10

    C語言實現DES算法

    C語言實現DES算法 本DES算法,使用了效率很高的C完成。目前,國內知名企業的POS終端中,單DES算法,均是采用這個函數完成。函數
    發表于 01-16 10:09 ?3259次閱讀

    DSP算法的c語言實現

    DSP算法的c語言實現,又需要的朋友下來看看。
    發表于 05-09 10:59 ?0次下載

    轉載一篇MSP430中斷c語言函數模板

    轉載一篇MSP430中斷c語言函數模板包括了基本模塊的所有中斷模板,感興趣的小伙伴們可以看看。
    發表于 07-26 11:11 ?3次下載

    C語言實現數字濾波

    C語言實現數字濾波 。對數值進行精度調整,下面給出幾種常用的數字濾波方法的C語言函數,這些函數
    發表于 07-26 15:44 ?10次下載

    PID控制算法的C語言實現(完整版)

    PID控制算法的C語言實現一 PID算法原理
    發表于 11-05 15:45 ?0次下載

    C++語言實現火車排序功能

    C++語言實現火車排序功能
    發表于 01-05 11:27 ?2次下載

    4個重要算法C語言實現源代碼

    4個重要算法C語言實現源代碼
    發表于 06-10 08:00 ?12次下載

    C語言實用教程之函數的詳細資料說明

    本文檔詳細介紹的是C語言實用教程之函數的詳細資料說明主要內容包括了:1程序設計的藝術性,2函數的定義與使用,3函數的作用域和存儲類型,4.預
    發表于 02-26 14:43 ?3次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言實</b>用教程之<b class='flag-5'>函數</b>的詳細資料說明

    使用C語言實現圖書館管理系統的源代碼和函數及軟件等資料合集

    本文檔的主要內容詳細介紹的是使用C語言實現圖書館管理系統的源代碼和函數及軟件等資料合集
    發表于 03-03 08:00 ?9次下載
    使用<b class='flag-5'>C</b><b class='flag-5'>語言實現</b>圖書館管理系統的源代碼和<b class='flag-5'>函數</b>及軟件等資料合集

    C++之函數模板的概念及意義

    一、函數模板的引出:1、c++中有幾種交換變量的方法:(1)定義宏代碼塊(2)定義函數代碼版本一:#include <iostream>#include <string>using namespace
    的頭像 發表于 12-24 15:58 ?836次閱讀

    累加校驗和C語言實現

    累加校驗和C語言實現
    發表于 11-29 18:06 ?10次下載
    累加校驗和<b class='flag-5'>C</b><b class='flag-5'>語言實現</b>

    怎么用C語言實現多態

    這里我想主要介紹下在C語言中是如何實現的面向對象。知道了C語言實現面向對象的方式,我們再聯想下,C
    的頭像 發表于 10-12 09:12 ?2012次閱讀

    使用C語言實現的CRC計算單元的例子

    使用C語言實現的CRC計算單元的例子
    的頭像 發表于 05-16 16:16 ?859次閱讀