• error: expected declaration specifiers or '...' before 'xxxx'(xxxx是函数形参)


    今天汗颜了一大阵

    早上,在编译我的源代码的时候竟然不通过编译,上个星期六也出现了这种情况,当时不知道怎么弄的后来又通过编译了,可能是原来的.o文件没有make clean 还保存在那里,以至于蒙过去了,我的代码也已经用SVN提交了,真是致命(污染了项目的源码)。好在我当即解决了。

    编译出错提示:

    ……………………

    error: expected declaration specifiers or '...' before 'WEB_VOICE_VAR'

    情形描述:

    结构体变量WEB_VOICE_VAR var  定义在 a.c 中,a.h声明 了 extern WEB_VOICE_VAR var.我在b.c 想使用a.c中已经赋值了的var结构体的成员的值,于是在b.h中#include"../../a.h",然,出现了上面的编译错误。

    原因分析:

    网上搜索,讨论的不少,越看越茫然。

    可能原因是

    b.h中#include "../../a.h" 而a.h中的函数声明中用到了b.h中的结构体或者typedef,那么就会出现在包含a.h的时候b.h中的结构体或者typedef还没有声明,从而陷入错误.

    解决办法:

    将#include "../../a.h"直接放到b.c中,当再次make 的时候,pass了

  • 相关阅读:
    面向对象编程听高翔“面向对象与生活”有感
    .Net调试技巧
    关于排序(简单)
    Http Handler由IIS6到IIS7的使用问题
    也谈【关于 京东员工被离职】另一个角度
    poj1062昂贵的聘礼
    poj1125 Stockbroker Grapevine
    poj1860 Currency Exchange
    poj1258 AgriNet
    poj2485 Highways
  • 原文地址:https://www.cnblogs.com/pengkunfan/p/3491460.html
Copyright © 2020-2023  润新知