Linux 下報錯 syntax error near unexpected token `(' 探索歷程,原因你絕對想不到

1. 前言

本來是想隨意寫一個簡單的程序進行測試,結果一個報錯讓我懷疑人生。本文描述的報錯原因,大家是絕對想不到的。我也很無奈呀!請看我一一道來,純粹自嘲吧。

2. 探索過程

就拿最熟悉的 Hello world 來演示吧,程序如下:

#include "stdio.h"

int main(int argc, char *argv[])
{
       printf("hello world!\n");
       return 0;
}

代碼簡單,可就是編譯通過,運行出錯,出錯信息如下:

./func.c: line 3: syntax error near unexpected token `('
./func.c: line 3: `int main(int argc, char *argv[])'

嘗試過程如下:

  1. 考慮到 Windows 和 Linux 下換行符的差異,直接在 Linux 下重新創建文件並使用 Vim 編寫,無果;
  2. 考慮到報錯信息提到 main 字樣,仔細查看 main 附近代碼,看是否有中文標點符號,無果;
  3. 考慮…知識儲備和經驗不夠了…

但吉人自有天相,很多時候,在我懷疑人生而無果的情況下,能夠讓我突然窺探到我想要的答案,很是幸運。

3. 原因

在 Linux 下操作,習慣性的使用 Tab 鍵自動補全功能了,在我使用如下命令編譯源文件後

gcc func.c

又再次習慣性的輸入 ./fu 並使用 Tab 鍵自動補全來運行程序,並且一氣呵成,全程腦子都不需要思考。

./func.c

結果就報出了該錯誤;其實此刻默認生成的 bin 文件是 a.out

4. 結語

首先我得吐槽一下:運行非 bin 文件,報錯居然是這樣的。又算是栽到你手裏了 – Linux

好吧,又再次深刻的體會到了 習慣的力量,這力量是巨大的,巨大到你不會認爲執行命令的語句是錯誤的,眼睛死死的盯着出錯信息來進行判斷。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章