C/C++编译或链接,错误汇总
来源:互联网 发布:魔音软件下载 编辑:程序博客网 时间:2024/05/28 22:10
低级错误汇总:
(1)环境:eclipse c语言;错误现象: 找不到库文件里的函数,编译时无错误,也没有提示找不到库。只是在链接时提示找不到该函数。
原因:库之间有依赖性,有先次序之分,调整以下库的次序就可以解决问题了。(2)环境:eclipse c语言;错误现象:编译时报出implicit declaration of function
原因:头文件中包含的或是使用extern声明的函数和函数本身定义不一致。
(3)环境:eclipse c语言;错误现象:两个线程使用localtime,结果localtime的值总是相同。
原因:localtime不可重入(4)unsigned int n_bytes = recv(socket_fd, recbuf,recvbuf_size,0);
原因:使用无符号整形去接收有符号返回值,结果有可能是:本来返回-1,却认为是4294967295,即0xFFFFFFFF。
(5)htons转换后结果不对
原因:htons是将16位整形转换为网络字节序,如果转换int数据,则高两个字节丢失,htonl才是转换32位的。
(6) error LNK2019: 无法解析的外部符号 "public: __thiscall Base::Base(void)" (??0Base@@QAE@XZ),该符号在函数 _wmain 中被引用
原因:类Base中的函数Base没有定义函数体。
(7)环境:eclipse c语言 No source available for "free() at 0x38e467b70c"
原因:指针未作初始化,让该指针指向一个确定的位置,防止野指针。应该这样定义:char *p_start = NULL;
(8)环境:eclipse c语言
描述:char *md5_str = (char*)malloc(33); md5_str[32] = '\0';strcat(md5_str,"ef7a");以连接的方式给md5_str赋值,结果却不确定!!!
原因:md5_str开辟的内存没有初始化,而strcat是从md5_str字符串尾部连接的。所以需要初始化----md5_str[0] = '\0';
(9) c:409: undefined reference to `pthread_create'
413: undefined reference to `pthread_join'
原因:因为pthread并非Linux系统的默认库,而是posix线程库,在Linux中将其作为一个库来使用,因此加上 -lpthread(或-pthread)以显示的链接该库。对于eclipse添加pthread库连接。另外函数在执行错误时的错误信息将作为返回值返回,并不修改系统全局变量errno,当然也无法使用perror()打印错误信息。
(10)visual studio编译:fatal error C1010: unexpected end of file while looking for precompiled header directive。
原因:寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include "stdafx.h")
(11)linux “段错误”(Segmentation Fault)
原因:段错误是指访问的内存超出了系统给这个程序所设定的内存空间,
例如访问了不存在的内存地址(例如:int *ptr = NULL;*ptr = 0;)、
访问了系统保护的内存地址(int *ptr = (int *)0; *ptr = 100;)、
访问了只读的内存地址( char *ptr = "test";strcpy(ptr, "TEST");)
栈溢出(void main(){main();})等等情况。
(12)char *p = (char*)malloc(81);p[80] = '0';
原因:非法的C字符串结尾,是'\0'不是‘0’。字符‘\0’和数据0是等价的。而‘0’却表示字符零,在内存中为48。
(13)eclipse运行错误:workspace in use or cannot be creates,choose a different one
原因:出现这种情况一般是workspace的配置文件中出现了.lock文件(workspace/.metadata/.lock),锁定了workspace。
把.lock文件删除即可。如果该文件不能删除,可能是因为javaw.exe进程未结束,结束该进程及eclipse.exe进程即可删除。
(14)结构体指针作为参数传入时程序崩溃
原因:结构体指针未分配内存空间,所以在执行函数体进行instance->s = 10;程序崩溃,这一点和数组指针不同,下例子执行出错!
struct TEST{ int s; char *p;};void fun(struct TEST *instance){instance->s = 10;instance->p = (char*)malloc(4);memcpy(instance->p,"123",4);}int main(){ struct TEST *AA; fun(AA);}寄语:你可能用一生去等待,结果只用两分钟将你的等待华为泡影,因为你在别人的眼里根本不重要。
确认后逐步整理吧!
- C/C++编译或链接,错误汇总
- C/C++编译链接错误解决方法 汇总
- pjsip 编译vid_streamutil.c 提示链接错误
- C/C++编译常见链接错误
- 【C/C++】编译和链接
- c编译链接过程
- C 编译、链接、加载
- C语言编译、链接
- C 编译、链接、加载
- C 编译、链接、加载
- 【C++】编译链接过程
- C 编译、链接、加载
- C 编译、链接、加载
- c语言编译链接
- C语言编译 链接
- c语言编译链接
- c++OTL错误汇总
- C++Builder编译链接错误LME288的解决
- 深入浅出CChart 每日一课——第十二课 共享X轴视图,穆斯林的婚礼
- Web Service学习
- 走进C++程序世界-------浅谈引用
- 嗯,让我们彻底搞懂C/C++函数指针吧(一)
- 黑马程序员——高新技术(类加载器)
- C/C++编译或链接,错误汇总
- 如何进行软件架构设计
- Mysql ubuntu 安装指南
- 阿里巴巴应聘有感——从笔试到面试
- openvpn pam mysql 账号
- 使用CSS把Div放在屏幕中间。
- Python 入门教程 6 ---- PygLatin
- 2、并发式(concurrent)服务器 一个连接对应一个线程(进程)
- 桶排序