• 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了

  • 相关阅读:
    MySQL 三节点企业版
    Raft 一致性算法论文译文 JAVA
    MySQL EXPLAIN 命令详解学习
    MySQL 5.7.17 Group Replication 初始
    JAVA 线程池以及其他
    什么是IIS并发连接数
    CUDA
    各种学习手册在线
    弱电系统标准CAD图例识图讲解
    ACM---算法
  • 原文地址:https://www.cnblogs.com/pengkunfan/p/3491460.html
Copyright © 2020-2023  润新知