Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1064069
  • 博文数量: 284
  • 博客积分: 8223
  • 博客等级: 中将
  • 技术积分: 3188
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-01 13:26
文章分类

全部博文(284)

文章存档

2012年(18)

2011年(33)

2010年(83)

2009年(147)

2008年(3)

分类: C/C++

2009-07-23 10:46:44

1. 未定义符号错误报警:

  
可能原因 

     a.      书写错误,写错符号;

    b.       缺乏动态或静态链接库:如上面的错误是编译时缺-lelf参数;

    c.       缺乏头文件,没有包含进来;

 

 2. ELF错误报警:

 
      

可能原因:

 a. 缺乏编译参数:如上面的错误是编译时缺-xarch=amd64参数;

 

3. 编译器报不可思议之错误:

 

   看上去很多错误,连main都变成了参数不在标识符列表中,这完全就不可能嘛。反复检查相关程序都是对的。最后只能采用分段注释的方法进行排查,最后发现是某头文件中,定义全局变量extern SYS_DB *map_db()没有加封号,结果编译器报错都在后面。

可能原因:

 a. 头文件中存在错误;如果声明函数没有加封号,这种错误害死人。

 b. 宏定义部分存在错误,宏定义不需要加封号!!!

 c. 今天才发现的,就是比如下面的函数定义:

#ifndef _HSVR_DEF
# define _HSVR_DEF


# include <stdlib.h>
# include <stdio.h>
# include <mysql.h>
# include "commsg.h"
# include "plclib.h"
# include "hmsg.h"
# include "red.h"
#endif

  此时,编译器会报出一个很奇怪的错误,当我去检查头文件的时候,却找不出任何问题。可是当我把代码修改为下面的形式时,错误消失了,你能看出问题吗??

#ifndef _HSVR_DEF
# define _HSVR_DEF

# include <stdlib.h>
# include <stdio.h>
# include "commsg.h"
# include "plclib.h"
# include "hmsg.h"
# include "red.h"
# include <mysql.h>
#endif

   原因估计跟mysql.h头文件中的定义有关系,网上没有看到相关的介绍。
阅读(461) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~