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

好吧,又再次深刻的体会到了 习惯的力量,这力量是巨大的,巨大到你不会认为执行命令的语句是错误的,眼睛死死的盯着出错信息来进行判断。

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