写了 15 行代码,编译报错竟然高达 1800 多行,这种奔溃的瞬间应该有很多同学遇到过。
代码分为两块,一个头文件,一个源文件。
test.h
#ifndef TEST_H #define TEST_H #includesize_tlength(constchar*s) #endif
test.c
#include "test.h" #include#include #include #include int main() { printf("%d ", length("aa")); } size_t length(const char *s) { return strlen(s); }
开始编译,当敲下回车的那一刻,瞬间有点上头,编译报错已经超出了终端的范围,一直往上翻到头也没找到编译的命令。
我尝试把错误定向到文件中,看了一下,有 1800 多行。
难怪很多初学者只需要半天时间从入门到放弃,这么多错误,根本无从下手。
先来大概分析下,提示的这些错误基本都是标准头文件里面的错误,比如 stdio.h,很显然,这是不可能的。
/usr/include/stdio.h:911:14: error: storage class specified for parameter ‘ctermid’ 911 | extern char *ctermid (char *__s) __THROW |
这个问题,一定是跟头文件有关,而且大概率是你写的头文件,影响了别人的头文件,比如函数声明的后面少了分号。
当 test.h 被展开的时候,由于函数声明后面没有加分号,导致其他被展开的头文件都不合符语法要求,头文件包含的越多,报错也就越多。如果这个时候真的去标准头文件里面找问题,基本就废了。
编译问题在C语言中应该是最简单的问题,现在的编译器足够智能,甚至能告诉你怎么修该。多写代码,遇到的多了,就能形成条件反射,看到问题,就能知道怎么修改。
-
代码
+关注
关注
30文章
4905浏览量
71002 -
编译
+关注
关注
0文章
680浏览量
34218
原文标题:写了15行代码,编译报错1800多行
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
电商API常见错误排查指南:避免集成陷阱

RTsmart源码编译错误,提醒我缺少文件导致make失败,为什么?
使用rt-thread构建openmv的固件工程,出现编译错误的原因?
JDK从8升级到21的问题集
打开FSP配置器界面的具体步骤

评论