答案是:我的代码少了一个 “;”
=====================================
现场:
回到 报错的那一行,发现没有问题。
报错的文件:ptlogin2_api.h(22行):expected unqualified-id before string constant
在我的一个cpp的 代码中间(绝对不是在头文件),使用了这个文件 ptlogin2_api.h 里面的 一个函数 xxx,
#ifdef __cplusplus
extern "C" {================>报错的哪一行
#endif
结果发现那里错了呢?
我所包含的 离 ptlogin2_api.h 最近的一个包含文件
#include "dev_db_def.h"===================》里面出了问题!枚举值定义最后少了“;”。
#include "ptlogin_app_id.h"
#include "panel_auth.h"
==========================================
其实有多个方案可以发现这个问题
1)把新加的代码全部去掉,包括头文件,确保自己的代码可以编译通过。(其实这样就可以发现时自己的问题了)
2)既然报错的地方没问题,代码附近的问题,或者是附近别的文件的问题。经常出现这样的情况,一个文件里面最后少了 “;”,在另一个文件里面报错。(通过这个方法有可能发现问题)
3)vi dev_insert.o 将代码展开,查看编译器最终编译代码时,的文件状态,这个方法是万能的。但也最复杂。
我的 dev_insert.o 展开如下:
45053 # 42 "../comm/dev_db_def.h"
45054 enum _ErrorCodeForeground
45055 {
45056 DR_ERR_OK = 0,
45057 DR_ERR_PARAMS_VALIDITY = 1000,
45058 DR_ERR_LOGIN_STATE,
45059 DR_ERR_INSERT_DEV,
45060 DR_ERR_SELECT_DEV,
45061 DR_ERR_UPDATE_DEV,
45062 DR_ERR_ACTION_TYPE,
45063
45064 }
45065 # 15 "dev_insert.cpp" 2
45066 # 1 "/data/home/nemo/code/isd_qzoneappbase_proj/base_class/base_lib/include/ptlogin_app_id.h" 1
45067 # 16 "dev_insert.cpp" 2
45068 # 1 "/data/home/nemo/code/isd_qzoneappbase_proj/outerlib/panel_auth/include/panel_auth.h" 1
45069
45070
45071
45072 # 1 "/data/home/nemo/code/isd_qzoneappbase_proj/base_class/extern_libs/tdev/include/toiw_all.h" 1
45073 # 5 "/data/home/nemo/code/isd_qzoneappbase_proj/outerlib/panel_auth/include/panel_auth.h" 2
45074 # 1 "/data/home/nemo/code/isd_qzoneappbase_proj/base_class/extern_libs/tbase/include/tbase_all.h" 1
45075 # 6 "/data/home/nemo/code/isd_qzoneappbase_proj/outerlib/panel_auth/include/panel_auth.h" 2
45076 # 1 "/data/home/nemo/code/isd_qzoneappbase_proj/outerlib/panel_auth/include/ptlogin2_api.h" 1
45077 # 25
"/data/home/nemo/code/isd_qzoneappbase_proj/outerlib/panel_auth/include/ptlogin2_api.h"
45078 extern "C"{
45079
====================================
详细的排错过程可以参考 邮箱里面的 一个文档 以gcc搜索关键字 排错即可。
====================================
gcc的常见报错error,通常是因为少了 ; 号
expected unqualified-id before ****
一般出现如下的提示信息都是是好了 分号‘;’,从报错的地方往上找,看看上面包含的头文件的结尾 类定义、枚举定义的最后是否 少了 分号。
error : multiple types in one declaration
一般因为,一个文件里面定义了两个class,其中前面的class 没有;号,在第二个class最后报错.
=====================================
类型重定义 链接失败,如果找不到代码的原因,有可能是makefile文件写的有问题
把同一个 .o文件链接了两次,就出现了这个错误.郁闷.
gcc下 makefile是自己写的,要非常小心.
分享到:
相关推荐
网络排错-网络安全-运维真实案例-公司大厦局域网网速慢排查手册.pdf
BGP配置与排错PPT~~~~~~~~~~~~~~~~~~~
route_ppt 1 EIGRP 2 OSPF 3 OSPF 4 Redistribute 5 BGP ch08 在企业网中实施IPv6 switch_ppt 1 VLAN 2 STP 3 routing-svi-cef 4 redundancy 5 sec 模块8 园区网中的语音和...模块7 集成、复杂企业网络的维护和排障
1-1 2路由备份&聚合排错实验pdf 1-1-305P实验pdf 1-140sP排错实验pdf 1-50PF综合实验pdf 11-605P综合排错实验pdf 1-7151实验库pdf 1-8ISS排错实验pdf 19路由过滤&路由引入实验pdf 1-10路由过滤&路由引入排错实验pdf ...
interface atm 12/0 atm clock internal chassis atm vc-per-vp 4096 atm oam flush ! interface atm 12/0.332 point-to-point atm pvc 332 3 32 aal5snap 0 0 0 encapsulation pppoe pppoe acName wenzhou
1-2 路由备份&聚合排错实验 1-3 OSPF 实验 1-4 OSPF 排错实验 1-5 OSPF 综合实验 1-6 OSPF 综合排错实验 1-7 IS-IS 实验库 1-8 IS-IS 排错实验 1-9 路由过滤&路由引入实验 1-10 路由过滤&路由引入排错实验 ...
832 排错心得2011-07 832 排错心得2011-07
1-2 路由备份&聚合排错实验 1-3 OSPF 实验 1-4 OSPF 排错实验 1-5 OSPF 综合实验 1-6 OSPF 综合排错实验 1-7 IS-IS 实验库 1-8 IS-IS 排错实验 1-9 路由过滤&路由引入实验 1-10 路由过滤&路由引入排错实验 ...
新的版本CCNP RS v2.0排错TSHOOT 300-135 官方认证指南 英文版
H3C 网络排错--静态路由协议
Oracle排错 DBCA建库诡异问题处理--rac环境不能创建rac库
Windows用户态程序高效排错(01-02).rar
H3C 网络排错-RIP协议
华为网络产品应用越来越普及,网络设备的日常维护和故障管理成为网络维护人员必须具备的一种能力。 掌握网络故障排除一般步骤 掌握常用故障诊断工具 掌握华为网络产品故障排除常用方法
华为网络产品应用越来越普及,网络设备的日常维护和故障管理成为网络维护人员必须具备的一种能力。 掌握网络故障排除一般步骤 掌握常用故障诊断工具 掌握华为网络产品故障排除常用方法
目录网盘文件永久链接 H3CTE 学习笔记: 安全排错故障 H3CTE故障排除模拟题一 数据链路层故障排错 以太网和广域网常用的物理排错 路由协议排错 回顾总结 网络应用故障排除 ...H3CTEv2.2-路由协议排错-BGP-01
原创LINUX EL5排错 troubleshooting
STUDENT AND INSTRUCTOR GUIDE These “Troubleshooting Scenarios” differ from the “Labs” portion of the courseware in that they are not “click by click” guides but rather are loosely guided ...
很有参考价值一份排错报告,H3CTE考试满分1000分,其中排错报告300分,写好报告是关键的一部分。