‘壹’ c语言编写51单片机程序时出现未定义是为什么
sbit P10=p^0 少了分号,而且定义端口最右边的p要大写. TH0=(655535-1000)/256;TL0=(65535-1000)%256;这里的是延时,这里只用看1000就知道延时1ms,如果里面的1000换成10000就是延时10ms
‘贰’ I单片机中编译出现 main 中引用的未定义的外部“ timel _ init”怎么解决
如果出现了为定义的外部的这个就可以直接删除啊,或者是定义它的具体意思
‘叁’ 交叉编译时提示 对'__C_ctype_b'的未定义引用
出现这种情况的原因,主要是C/C++编译为obj文件的时候并不旅卖需要函数的具体实现,只要有函数的原型即可。但是在链接为可执行文件的时候就必须要具体的实现了。如果错误是未声明的引用,那就是找不到函数的原型,解决办法这里就不细致说了,通常是相关的头文件未包含。
解决办法
指定原因就好办了,既然知道是缺少了函数的喊昌具体实现,那么就给它这个函数的实现就好了。比如上面的例子,是因为缺失了dlopen、dlsym、dlerror、dlclose这些函数的实现,这几个函数是用于加载动态链接库的,编译的时候需要添加-ldl来使用dl库(这是静态库,在系统目录下/usr/lib/i386-linux-gnu/libdl.a、/usr/lib/x86_64-linux-gnu/libdl.a)。
但是看上面编译的时候是有添加-ldl选项的,那么为什么不行呢?
gcc 依赖顺序问题
这个主要的原因是gcc编译的时候,各个文件依赖顺序的问题。
在gcc编译的时候,如果文件a依赖于文件b,那么编译的时候必须把a放前面,b放后面。
例如:在main.c中使用了pthread库相关函数,那么编译的时候必须是main.c在前,-lpthread在后。gcc main.c -lpthread -o a.out。
上面拆渗逗出现问题的原因就是引入库的顺序在前面了,将其放置在后面即可了。
g++ -o spider bloomfilter.o confparser.o crc32.o dso.o hashs.o md5.o qstring.o sha1.o socket.o spider.o threads.o url.o -rdynamic -lpthread -levent -lcrypt -ldl
‘肆’ 急:EXCEL文件第一次打开时提示“编译错误:子过程或函数未定义”,如何让其不再显示
方法一、禁用宏 :点击菜单“工具-宏-安全性”,选择“高”或者“非常高”。但这样一来,所有宏都无法使用
方法二、删除错误的宏:出现这个提示是因为宏的编写有错误,因此点击菜单“工具-宏-Visual Basic编辑器”,找到当前工作簿中的所有宏,完全删除并保存即可