最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析C語言頭文件和庫的一些問題

 更新時(shí)間:2013年07月16日 10:22:45   作者:  
以下是對(duì)C語言中頭文件和庫的一些問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下
使用gcc的編譯器 頭文件沒有包含stdlib.h,使用atoi函數(shù)(atoi函數(shù)在stdlib.h中才有聲明),編譯卻沒有出錯(cuò)

如果編譯的時(shí)候加上-Wall選項(xiàng),會(huì)有個(gè)警告,請(qǐng)問這是為什么?
這是因?yàn)镃語言一個(gè)非常傻的規(guī)定:一個(gè)函數(shù)如果沒有聲明函數(shù)原型,其返回值類型就是int(所謂的implicit declaration)。由于atoi恰好真返回int,所以你即使不包含它的頭文件也不報(bào)錯(cuò)。至于這個(gè)警告,是為了避免你由于忘記聲明函數(shù)原型而出錯(cuò)。

編譯器對(duì)于沒有定義過的函數(shù)原型直接當(dāng)作它返回int,它不需要知道它已經(jīng)定義過了
也就是說,當(dāng)你以一個(gè)參數(shù)列表調(diào)用atoi時(shí),編譯器已經(jīng)知道這個(gè)函數(shù)的參數(shù)列表是什么,它只不知道返回值而已,在這種情況下,編譯器還需要什么額外的東西呢?它當(dāng)然可以通過。
注意:編譯器不關(guān)心某個(gè)函數(shù)在哪個(gè)頭文件被定義,它只需要知道這個(gè)函數(shù)是什么原型即可
復(fù)制代碼 代碼如下:

#include<stdio.h>
//#include<stdlib.h>
int main()
{
int i;
double f;
char b[5] = "23";
char c[5] = "2.3";
i = atoi(b);
f = atof(c);
printf("i=%d f=%lf\n", i, f);
return 0;
}

gcc test.c -o test沒有任何警告
gcc -Wall test.c -o test
出現(xiàn)警告:w9.c: In function `main':
w9.c:9: warning: implicit declaration of function `atoi'
w9.c:10: warning: implicit declaration of function `atof'
輸出結(jié)果:
i=23 f=1717986918.000000
加上#include<stdlib.h>則結(jié)果正常
看來atoi和atof都在C標(biāo)準(zhǔn)庫glibc中,但是很奇怪為什么C標(biāo)準(zhǔn)庫函數(shù)sqrt和pow卻不在glibc中

相關(guān)文章

  • C++ 虛函數(shù)表圖文解析

    C++ 虛函數(shù)表圖文解析

    最近學(xué)了設(shè)計(jì)模式中的簡單工廠模式,對(duì)多態(tài)有了具體的認(rèn)識(shí)。于是補(bǔ)了補(bǔ)多態(tài)、虛函數(shù)、虛函數(shù)表相關(guān)的知識(shí),本文介紹了C++ 虛函數(shù)表,感興趣的了解一下
    2021-05-05
  • 詳細(xì)聊聊c語言中的緩沖區(qū)問題

    詳細(xì)聊聊c語言中的緩沖區(qū)問題

    緩沖區(qū)又稱為緩存,它是內(nèi)存空間的一部分,也就是說在內(nèi)存空間中預(yù)留了一定的存儲(chǔ)空間,這些存儲(chǔ)空間用來緩沖輸入或輸出的數(shù)據(jù),這部分預(yù)留的空間就叫做緩沖區(qū),這篇文章主要給大家介紹了關(guān)于c語言中緩沖區(qū)問題的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • Qt控件之QDialog使用及技巧小結(jié)

    Qt控件之QDialog使用及技巧小結(jié)

    QDialog是Qt中的一個(gè)類,繼承自QWidget類,用于創(chuàng)建對(duì)話框窗口,可以顯示模態(tài)或非模態(tài)的對(duì)話框,本文就來介紹一下Qt控件之QDialog使用及技巧小結(jié),感興趣的可以了解一下
    2023-10-10
  • C++實(shí)現(xiàn)掃雷游戲(控制臺(tái)版)

    C++實(shí)現(xiàn)掃雷游戲(控制臺(tái)版)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)掃雷游戲,控制臺(tái)版的掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • c語言使用fdk_aac實(shí)現(xiàn)aac音頻解碼為pcm

    c語言使用fdk_aac實(shí)現(xiàn)aac音頻解碼為pcm

    這篇文章主要為大家詳細(xì)介紹了c語言如何使用fdk_aac庫實(shí)現(xiàn)aac音頻解碼為pcm的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • C語言堆與二叉樹的順序結(jié)構(gòu)與實(shí)現(xiàn)

    C語言堆與二叉樹的順序結(jié)構(gòu)與實(shí)現(xiàn)

    堆是計(jì)算機(jī)科學(xué)中一類特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱,通常是一個(gè)可以被看做一棵完全二叉樹的數(shù)組對(duì)象。而堆排序是利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。本文將詳細(xì)介紹堆與二叉樹的順序結(jié)構(gòu)與實(shí)現(xiàn),需要的可以參考一下
    2022-05-05
  • C 二分查找 遞歸與非遞歸的實(shí)現(xiàn)代碼

    C 二分查找 遞歸與非遞歸的實(shí)現(xiàn)代碼

    C 二分查找 遞歸與非遞歸的實(shí)現(xiàn)代碼,需要的朋友可以參考一下
    2013-03-03
  • C++中的各種容器的使用方法匯總

    C++中的各種容器的使用方法匯總

    這篇文章主要介紹了C++中的各種容器的使用方法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • C語言數(shù)組入門之?dāng)?shù)組的聲明與二維數(shù)組的模擬

    C語言數(shù)組入門之?dāng)?shù)組的聲明與二維數(shù)組的模擬

    這篇文章主要介紹了C語言數(shù)組入門之?dāng)?shù)組的聲明與二維數(shù)組的模擬,數(shù)組學(xué)習(xí)的同時(shí)也要相應(yīng)理解C語言指針的作用,需要的朋友可以參考下
    2015-12-12
  • Qt項(xiàng)目實(shí)戰(zhàn)之實(shí)現(xiàn)MP3音樂播放器

    Qt項(xiàng)目實(shí)戰(zhàn)之實(shí)現(xiàn)MP3音樂播放器

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt實(shí)現(xiàn)MP3音樂播放器,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下
    2023-03-03

最新評(píng)論

开平市| 若羌县| 福安市| 玉树县| 长兴县| 井研县| 乾安县| 潞城市| 炉霍县| 甘洛县| 东至县| 新建县| 建水县| 纳雍县| 满洲里市| 聊城市| 岳阳市| 商都县| 康定县| 栾城县| 临朐县| 三原县| 阜新市| 通渭县| 普宁市| 海晏县| 新密市| 江安县| 讷河市| 平定县| 喀喇沁旗| 赤水市| 福海县| 井陉县| 乌拉特前旗| 剑川县| 德阳市| 菏泽市| 宜黄县| 扎赉特旗| 广饶县|