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

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

3天內(nèi)不再提示

C語言為什么不需要包含stdio.h

學益得智能硬件 ? 來源:學益得智能硬件 ? 2024-10-29 15:48 ? 次閱讀

我們在寫單片機程序的時候,第一行都會包含 reg51.h,于是就有同學提出了疑問,為什么不需要包含 stdio.h?

如果從C語言本身來講,一個完整的 C 代碼并不需要包含頭文件。

標準中也提到,程序的入口是 main 函數(shù),它應該有個整型返回值,參數(shù)可有可無。

所以一個最簡單的 C 代碼應該是這樣。

int main(void)
{
    return 0;
}

至于它的返回值,即使寫成 void,很多編譯器也不會提示問題。

那我們學習C語言的時候,為什么在第一行加上 stdio.h?

因為在代碼中用到了 printf,使用函數(shù),就得提前聲明,告訴編譯器它是個函數(shù),并且函數(shù)原型是什么樣。

而 printf 函數(shù)的聲明,就放在了 stdio.h 里面。

如果程序里面用不到輸入輸出相關的函數(shù),完全可以不包含 stdio.h。

再回到 51 單片機上。

作為一個裸機程序,很多時候,我們用不到 printf,所以也就很少包含 stdio.h。

包含 reg51.h,主要還是因為這里面定義了很多寄存器,比如點燈需要用到的 P1 等等,打開 reg51.h,你會發(fā)現(xiàn),它其實就是個地址。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6030

    文章

    44484

    瀏覽量

    631800
  • C語言
    +關注

    關注

    180

    文章

    7591

    瀏覽量

    135778
  • 函數(shù)
    +關注

    關注

    3

    文章

    4276

    瀏覽量

    62313
  • 編譯器
    +關注

    關注

    1

    文章

    1615

    瀏覽量

    49008

原文標題:C語言并不是非要包含stdio.h

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

收藏 人收藏

    評論

    相關推薦

    庫文件stdlib.hstdio.h不支持utoa()和snprintf()

    ; gt;但是函數(shù)只是把錯誤拋在上面。但并非總是如此。我想我需要知道STDLIB。hSTDIO。h實際上是如何加載到項目中的,以及從何處來的。什么是對標準的內(nèi)置庫文件進行更改,這些文
    發(fā)表于 01-11 11:21

    ucos在PC機上的應用提示無法打開stdio.h文件

    為什么我編譯#includevoid main(){while(1){printf("hello world\n");}}老是提示無法打開stdio.h文件?求大神解答
    發(fā)表于 04-28 23:13

    為什么燒寫stdio.h屏幕會發(fā)黑?

    燒寫stdio.h屏幕發(fā)黑 什么原因?
    發(fā)表于 08-23 05:45

    在嵌入式處理器環(huán)境中為什么匯編語言不需要堆棧?

    在嵌入式處理器環(huán)境中,為何C語言(函數(shù)調(diào)用)需要堆棧,而匯編語言不需要堆棧?據(jù)我所知,c
    發(fā)表于 03-20 04:35

    嵌入式開發(fā)中C語言編程的相關資料分享

    ,使用庫函數(shù)是不可避免的。關于使用庫函數(shù)的最簡單的例子就是printf()。在Linux環(huán)境下的C語言編程中,庫函數(shù)包括兩個部分:一種是C語言的標準庫函數(shù),例如
    發(fā)表于 12-15 06:13

    編譯顯示fatal error: stdio.h: No such file or directory怎么解決?

    在編譯通過命令arm-poky-linux-gnueabi-gcc test.c,編譯程序時,顯示fatal error: stdio.h: No such file or directory,用gcc編譯不會報錯!
    發(fā)表于 01-10 06:35

    arm-poky-linux-gnueabi-gcc 編譯提示找不到stdio.h怎么辦?

    了一個helloworld 的程序,通過arm-poky-linux-gnueabi-gcc 編譯提示找不到stdio.h,試了網(wǎng)上的安裝lib6-dev 不行,求解決!?。?!hello程序如下
    發(fā)表于 11-28 06:01

    無法從“.c”文件加載在“.h”中聲明的變量和頭文件請教如何解決

    文件中包含“components.h”和“stdio.h”并聲明變量時沒有問題。但是,當包含 core.h 和頭文件中聲明的變量時會發(fā)生錯誤
    發(fā)表于 12-02 07:56

    不需要場效應管的多路傳輸開關

    不需要場效應管的多路傳輸開關
    發(fā)表于 04-13 10:44 ?893次閱讀
    <b class='flag-5'>不需要</b>場效應管的多路傳輸開關

    基于單片機設計的軟件時鐘C語言程序

    本內(nèi)容提供了基于單片機設計的軟件時鐘C語言程序 程序如下: #pragma db oe #include reg52.h #include absacc.h #include stri
    發(fā)表于 11-21 15:59 ?198次下載

    一些常見的C語言字符串操作

    ? #字符串倒序輸出 實現(xiàn)邏輯,通過strlen獲取字符串長度,然后通過 len/2 進行交叉賦值,這里需要注意,不需要考慮len是奇數(shù)還是偶數(shù)的問題。 如果len是奇數(shù),最后一個字符就不需要倒序
    的頭像 發(fā)表于 12-24 16:31 ?2045次閱讀

    不需要電感器

    不需要電感器
    發(fā)表于 04-29 12:14 ?3次下載
    <b class='flag-5'>不需要</b>電感器

    C語言中的數(shù)組空間動態(tài)開辟

    的方法更加靈活,更能有效的根據(jù)需要開辟空間使用。 1、一維數(shù)組 一維數(shù)組最簡單,直接使用 malloc 函數(shù)就可以開辟,以 int 型數(shù)據(jù)為例,開辟一個連續(xù)空間使用。 # include stdio.h
    的頭像 發(fā)表于 02-10 12:42 ?2045次閱讀

    C語言如何實現(xiàn)Hello xiaolin

    在上述程序里編譯預處理命令稱為文件包含命令,作用是在編譯之前把程序需要使用的關于系統(tǒng)定義的函數(shù)printf()的一些信息文件stdio.h包含進來。
    的頭像 發(fā)表于 03-08 16:06 ?334次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>如何實現(xiàn)Hello xiaolin

    不需要點表的工業(yè)網(wǎng)關”如何實現(xiàn)松下FPG-C32T2H數(shù)據(jù)采集和遠程維護的物聯(lián)網(wǎng)解決方案

    深控技術的 “不需要點表的工業(yè)網(wǎng)關” 實現(xiàn)松下 FPG-C32T2H 數(shù)據(jù)采集和遠程維護的物聯(lián)網(wǎng)解決方案
    的頭像 發(fā)表于 10-12 11:30 ?222次閱讀
    “<b class='flag-5'>不需要</b>點表的工業(yè)網(wǎng)關”如何實現(xiàn)松下FPG-<b class='flag-5'>C32T2H</b>數(shù)據(jù)采集和遠程維護的物聯(lián)網(wǎng)解決方案