VIM编辑C文件保存每次都提示错误

hunxiyi 发布于 2013/11/21 22:18
阅读 1K+
收藏 0
Vim

@若然 @Ruchee @xiaoduan660 你好,想跟你请教个问题:

我用VIM编辑C文件,每次保存后,就会跳出这个显示ERROR (1) LN 18,意思是这18行出错了。。鼠标没点击显示出错的这行时候,会如图一现在的那样,有个红色的箭头,后面还有一个红色的波浪号。

鼠标点击这行的时候,下面会出现提示说,这个头文件找不到【但是这个头文件确实存在这个工程里】,见图2 。


有人说这是包含文件头应该用 "" 而不是<> ,但我试了改成 "" 也是出错的。

只有把这个stm32l1xx.h这个头文件放在这个打开的ad.c同样的目录里,才不会出现这个错误

但又有新问题了,这下提示ERROR (1) LN 266..见图三,这个意思应该是266行出错了吧,但是我这个文件一共才241行啊。。这到底怎么回事啊

每次保存都会出现这个ERROR,看的人真的极端愤怒

希望朋友们能帮助我一下,谢谢了


加载中
0
Ruchee
Ruchee

不清楚你具体的编译器环境,所以无法作答

终极解决方法:把语言验证插件删掉,譬如 syntastic 这样的插件,这样就一劳永逸了,或者也可以单独对 C语言 禁用该功能(syntastic 有禁用的选项

语法验证插件适合于 Lua/PHP/Python/Ruby 等不需要编译的动态语言,且对这些语言的错误提示准确性很高,但对于 C/C++/D/Go 等需要编译的语言不太适用

hunxiyi
hunxiyi
非常感谢你的回答,我就是用了syntastic才出这样的问题,现在已经删除了,清爽多了。。看来还是要回归VIM编辑器的本质才更好点啊,哈哈!
0
jingweiyoung
jingweiyoung
有点让人抓狂的感觉,有时候我也会遇到类似的问题,baidu+google弄了半天还没搞定,我以为一个程序要简单易用才好,但实际偏偏不是这样,是用户不懂吗?往往解决一个问题,却花了很多时间在一些比较扯淡的事情上...
hunxiyi
hunxiyi
是啊。。开源软件的好处很多,但我感觉这就是开源软件的劣势。。
0
z
zhao187302053

楼主尝试一下把stm32xxx.h的内容直接copy一份放进去试试,毕竟解决问题才是王道

hunxiyi
hunxiyi
stm32l1xx.h是固件库里面自带的,内容很多,复制进去不现实啊。。。还是禁用语言检查插件最实在了,,,一劳永逸
0
中山野鬼
中山野鬼
头文件,<> "" 的用法,楼主确定都清楚吗?哈,反正我的习惯是自己的头文件都是专门的目录,然后编译时都加上 -I。别怪编辑器或编译器,你自己把基础的事情搞搞清楚先。。。
0
中山野鬼
中山野鬼

引用来自“pengloo53”的答案

引用来自“中山野鬼”的答案

头文件,<> "" 的用法,楼主确定都清楚吗?哈,反正我的习惯是自己的头文件都是专门的目录,然后编译时都加上 -I。别怪编辑器或编译器,你自己把基础的事情搞搞清楚先。。。
别掉胃口啊,你倒是说说有什么区别啊。
哈,c国际标准网上到处都有,为什么不自己看一下呢?那里就有的说,而且更权威。明明可以查找到正确答案的问题,却还要问,这就sb了。当然不知道怎么查,或到哪里查,而问问题,这个不算sb。为了防止楼主sb,我只会给出问题的原因,而不是重复正确答案的内容,否则我就显得很sb。
中山野鬼
中山野鬼
回复 @hunxiyi : 哈,心态这么浮躁?继续浮躁吧。
hunxiyi
hunxiyi
山外有山,人外有人,你TMD生下来就会这么多吗?我没@你 ,请你闭嘴,恶心扒拉的讲这么多废话
中山野鬼
中山野鬼
回复 @pengloo53 : 我给出了问题的所在,而不是问题的答案。会思考的自然会收敛的锁定相关概念并进行问题查找。问题本身不确定,是值得问的,问题查找方法不确定也是值得问的,两个都确定,还tmd问,就有辱自己和别人的智商。你不要混淆上面三个不同的情况。哈。
个人学习
个人学习
如果都是你这样的人,我看大家以后都不用上帖问问题了,因为不管什么问题,书上都有,或是问Google。哦,不对,问Google也没用,因为找不到答案的,找到答案也是回去看书吧。
-1
个人学习
个人学习

引用来自“中山野鬼”的答案

头文件,<> "" 的用法,楼主确定都清楚吗?哈,反正我的习惯是自己的头文件都是专门的目录,然后编译时都加上 -I。别怪编辑器或编译器,你自己把基础的事情搞搞清楚先。。。
别掉胃口啊,你倒是说说有什么区别啊。
hunxiyi
hunxiyi
使用尖括号的话,编译时会先在系统include目录里搜索,如果找不到才会在源代码所在目录搜索;使用双引号则相反,会先在源代码目录里搜索。这就意味着,当系统里(如/usr/include/里)有一个叫做math.h的头文件,而你的源代码目录里也有一个你自己写的math.h头文件,那么使用尖括号时用的就是系统里的;而使用双引号的话则会使用你自己写的那个。
返回顶部
顶部