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

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

【編譯問題】很詭異的編譯報錯expected declaration or statement at end of input

嵌入式物聯(lián)網(wǎng)開發(fā) ? 來源:嵌入式物聯(lián)網(wǎng)開發(fā) ? 作者:嵌入式物聯(lián)網(wǎng)開發(fā) ? 2022-12-07 08:58 ? 次閱讀

**【C語言進(jìn)階】很詭異的編譯報錯expected declaration or statement at end of input **

一個很詭異的編譯報錯,不仔細(xì)還真發(fā)現(xiàn)不了!

1 問題現(xiàn)場

有一天我在調(diào)試代碼的時候,剛剛代碼還好好的,突然來了一個報錯:

recan@ubuntu:~/11111$ gcc -o test 111/222/333/444/555/666/777/888/999/test.c 
 111/222/333/444/555/666/777/888/999/test.c: In function ‘test3’:
 111/222/333/444/555/666/777/888/999/test.c:37:1: error: expected declaration or statement at end of input
    37 | }
       | ^

這就讓我很納悶,咋回事呢?

2 復(fù)現(xiàn)代碼

我們來看下當(dāng)時的代碼,為了說明問題,我把無關(guān)代碼都刪除了,僅保留有效代碼:

?
 #include 
 ?
 int test1(void)
 {
 return 0;
 }
 ?
 int test2(void)
 {
 return 0;
 }
 ?
 ?
 int test3(void)
 {
 return 0;
 ?
 ?
 int test4(void)
 {
 return 0;
 }
 ?
 ?
 int test5(void)
 {
 return 0;
 }
 ?
 ?
 int main(void)
 {
     printf("__FILE__: %s\\n", __FILE__);
 return 0;
 }
 ?

示例代碼很簡單,就是一堆的函數(shù),然后啥也沒干。

3 編譯分析

**根據(jù)編譯報錯,我們看下,提示 **line37行 報錯了? 37行不是文件的結(jié)束嗎?

**報錯的英文對應(yīng)的中文含義是:**錯誤:輸入末尾應(yīng)為聲明或語句

很顯然不是37行有問題嗎?我的main函數(shù)肯定沒有問題啊?

那么有沒有可能是前面的函數(shù)有問題啊?

**原來是 line16 中的test3函數(shù),少了結(jié)尾的 **} 大括號,導(dǎo)致了編譯報錯的蔓延。

當(dāng)然,解決這個編譯問題也很簡單,把test函數(shù)的大括號補(bǔ)上即可。

4 小小總結(jié)

  • 排查編譯問題,不要僅局限于報錯的行號,找找上下文,可能別人的錯誤導(dǎo)致了你的錯誤;
  • **誤刪一行 **} 大括號,不經(jīng)意間就報錯了;
  • 代碼管理,一定要用起來;這種情況,實(shí)在不行就比對下代碼,很容易就發(fā)現(xiàn)問題了。

5 更多分享

[架構(gòu)師李肯]

架構(gòu)師李肯全網(wǎng)同名 ),一個專注于嵌入式IoT領(lǐng)域的架構(gòu)師。有著近10年的嵌入式一線開發(fā)經(jīng)驗(yàn),深耕IoT領(lǐng)域多年,熟知IoT領(lǐng)域的業(yè)務(wù)發(fā)展,深度掌握IoT領(lǐng)域的相關(guān)技術(shù)棧,包括但不限于主流RTOS內(nèi)核的實(shí)現(xiàn)及其移植、硬件驅(qū)動移植開發(fā)、網(wǎng)絡(luò)通訊協(xié)議開發(fā)、編譯構(gòu)建原理及其實(shí)現(xiàn)、底層匯編及編譯原理、編譯優(yōu)化及代碼重構(gòu)、主流IoT云平臺的對接、嵌入式IoT系統(tǒng)的架構(gòu)設(shè)計(jì)等等。擁有多項(xiàng)IoT領(lǐng)域的發(fā)明專利,熱衷于技術(shù)分享,有多年撰寫技術(shù)博客的經(jīng)驗(yàn)積累,連續(xù)多月獲得RT-Thread官方技術(shù)社區(qū)原創(chuàng)技術(shù)博文優(yōu)秀獎,榮獲[CSDN博客專家]、[CSDN物聯(lián)網(wǎng)領(lǐng)域優(yōu)質(zhì)創(chuàng)作者]、[2021年度CSDN&RT-Thread技術(shù)社區(qū)之星]、[2022年RT-Thread全球技術(shù)大會講師]、[RT-Thread官方嵌入式開源社區(qū)認(rèn)證專家]、[RT-Thread 2021年度論壇之星TOP4]、[華為云云享專家(嵌入式物聯(lián)網(wǎng)架構(gòu)設(shè)計(jì)師)]等榮譽(yù)。堅(jiān)信【知識改變命運(yùn),技術(shù)改變世界】!

審核編輯:湯梓紅

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

    關(guān)注

    180

    文章

    7601

    瀏覽量

    136251
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    654

    瀏覽量

    32814
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1274

    瀏覽量

    39944
收藏 人收藏

    評論

    相關(guān)推薦

    RX231系列MCU舊工程打開編譯報錯問題解決方法

    RX231系列MCU舊工程打開編譯報錯,使用新版本為Renesas e2 studio,Version: 2023-04 (23.4.0)
    的頭像 發(fā)表于 01-03 12:32 ?1095次閱讀
    RX231系列MCU舊工程打開<b class='flag-5'>編譯</b><b class='flag-5'>報錯</b>問題解決方法

    I2C boot使用ARM GCC編譯pass, 改用ARM MDK編譯報錯怎么解決?

    I2C boot 使用ARM GCC 編譯pass, 改用ARM MDK 編譯報錯如下, 怎么解決,謝謝! cannot open source input file &quo
    發(fā)表于 06-03 06:06

    編譯例程pipeline_bt_source失敗怎么解決?

    編譯其他ADF庫里的例程沒有問題,就這個會出錯,初步分析是ADF庫里調(diào)用了IDF庫的函數(shù),但是找不到,不知道要怎么將它們關(guān)聯(lián)起來,以下是編譯報告: C:/Users/HUANG/esp
    發(fā)表于 06-28 06:38

    mplab編程C,程序編譯不出來

    declaration specifiers before 'main'interrupts.c:43:1: error: expected '{' at end of input
    發(fā)表于 08-05 15:17

    DSP2812 ccs3.3編譯報錯At end of source: error: expected a "}",但實(shí)際上沒少“}”

    急救,請諸位大神解疑釋難:采用DSP2812,在 ccs3.3環(huán)境下編譯報錯At end of source: error: expected a "}",但實(shí)際上沒少“}”
    發(fā)表于 06-21 11:49

    DSP2812在ccs3.3環(huán)境下報錯At end of source: error: expected a "}",但實(shí)際上沒少“}”

    急救,請諸位大神解疑釋難:采用DSP2812,在 ccs3.3環(huán)境下編譯報錯At end of source: error: expected a "}",但實(shí)際上沒少“}”
    發(fā)表于 06-21 11:55

    CC3200 應(yīng)用示例中編譯報錯

    CC3200 應(yīng)用示例中 wlan_station_Release編譯報錯“OSI_OK,” expected an identifier在枚舉定義時報錯
    發(fā)表于 03-22 13:50

    請問數(shù)組定義報錯:#19 extra text after expected end of number是什么原因造成的?如何解決?

    本帖最后由 一只耳朵怪 于 2018-6-14 08:48 編輯 我用CCS6.0定義了一個數(shù)組,編譯時報這個錯誤:#19 extra text after expected end
    發(fā)表于 06-13 07:03

    進(jìn)入buildroot-2016.11手動編譯 make 全部包提示 libgpgme-1.7.1 包無法編譯通過是為什么?

    ',' or ';' before '{' token{^context.cpp:1645:1: error: expected '}' at end of input}^make[6
    發(fā)表于 01-13 08:47

    吳鑒鷹總結(jié)的Keil編譯常見問題(一)

    吳鑒鷹總結(jié)的Keil編譯常見問題,例如:.error: #18: 6.error: #18: expected a ")" 如果是出現(xiàn)在c 文件中 多半是因?yàn)樯倭艘粋€")"或者錯誤行有編譯器不識別的字符 如果出現(xiàn)在頭文件中
    發(fā)表于 07-22 15:31 ?0次下載

    IAR編譯問題

    的,就好比組1有.h文件但是組2 沒有然后編譯就會報錯。解決辦法就是將相關(guān).h文件復(fù)制到相關(guān)的所有文件夾里面問題二:修改好了編譯報錯,調(diào)試的時候不能單步運(yùn)行,也打不了斷點(diǎn),這時候需要
    發(fā)表于 12-03 10:36 ?8次下載
    IAR<b class='flag-5'>編譯</b>問題

    CCS編譯器 報 error: expected a “)“ 的錯誤

    使用CCS 進(jìn)行m430f5529的開發(fā)過程中,編譯器報error: expected a “)” 的錯誤。當(dāng)時以為是自己少了括號,但是認(rèn)真檢查后發(fā)現(xiàn)無誤,經(jīng)過反復(fù)的嘗試,發(fā)現(xiàn)只要函數(shù)的輸入?yún)?shù)為N
    發(fā)表于 12-16 16:56 ?14次下載
    CCS<b class='flag-5'>編譯</b>器 報 error: <b class='flag-5'>expected</b> a “)“ 的錯誤

    error:expected identifier before ‘(‘ token,結(jié)構(gòu)體指針宏定義錯誤

    error:expected identifier before ‘(’ token,結(jié)構(gòu)體指針宏定義錯誤編譯時彈出標(biāo)題所示錯誤,一般為宏定義里有與其他地方重復(fù)的常量符號。找出名字重復(fù)的符號并修改
    發(fā)表于 01-13 15:42 ?11次下載
    error:<b class='flag-5'>expected</b> identifier before ‘(‘ token,結(jié)構(gòu)體指針宏定義錯誤

    VScode編譯器如何配置C/C++編譯環(huán)境

    昨天有伙伴私信我,為什么我用C語言寫的hello world幾行代碼,在編譯器里面報錯了呢?
    的頭像 發(fā)表于 03-16 08:38 ?5588次閱讀

    【GCC編譯運(yùn)行報錯】error while loading

    【GCC編譯】運(yùn)行編譯后的程序報錯 error while loading shared libraries: lib*.so: cannot open shared object file
    的頭像 發(fā)表于 08-26 13:14 ?6629次閱讀
    【GCC<b class='flag-5'>編譯</b>運(yùn)行<b class='flag-5'>報錯</b>】error while loading