冲突声明(conflicting declaration)解决

使用到的2个库文件,重复定义了同名的数据类型。

1、在后一个引用的定义的地方(比如uint64这个类型被重复定义)
 

#ifdef uint64

#undef uint64

#define unsigned long long uint64 

将前一个定义“undefine”,重新定义一个。这个要求冲突的2个定义必须是相同类型(都是unsigned long long),不然前一个文件中使用到的地方就会报错。

 

2、新建一个中间文件,interface.h和interface.cc

在.h文件中,定义新的数据类型和方法,内容为使用到的库2的数据类型和方法。在其他文件调用库2方法的地方,全部转换为调用.h中新定义的数据类型和方法。其中void myset()函数内部调用库2中的方法。

class interface{
public:
    struct a{
        sss
    }

    void myset();

在.cc文件中

#include "interface.h"

extern {
    库2.h
}

extern 库2的数据类型
extern 库2中使用到的方法

void interface::myset(){
    库2中的方法;
}

通过这种方法将库2和使用的地方隔离开来,完全通过interface来中转。

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 这个问题看起来是一个C语言的错误,具体来说是 "conflicting declaration 'int *p'"。这个错误通常发生在多个地方声明了同一个变量,或者在同一个文件中重复包含了一个头文件。需要检查代码并解决变量重复声明的问题。 ### 回答2: 出现"conflicting declaration 'int* p'"错误通常是因为在同一个作用域内多次声明了相同名称的变量。编译器无法确定应该使用哪个声明解决该错误的方法有以下几种: 1.将重复声明的变量名更改为不同的名称,以避免冲突。 2.使用extern关键字来引用之前声明的变量。例如,在第二次声明时,可以在变量前面添加extern关键字来引用已经声明过的变量。 3.检查代码中的作用域和声明顺序,确保没有重复声明同一个变量。 例如,假设我们有以下代码片段: int* p; //其他代码 int main(){ //其他代码 int* p; //重复声明了变量p //其他代码 return 0; } 为了解决该错误,我们可以更改第二次声明的变量名,例如: int* p; //其他代码 int main(){ //其他代码 int* q; //将变量名p改为q //其他代码 return 0; } 或者使用extern关键字来引用已经声明的变量p,例如: int* p; //其他代码 int main(){ //其他代码 extern int* p; //使用extern关键字来引用已经声明的变量p //其他代码 return 0; } 总结来说,"conflicting declaration 'int* p'"错误是由于在同一作用域中多次声明相同变量名造成的。要解决该错误,可以更改变量名、使用extern关键字或检查代码中的作用域和声明顺序。 ### 回答3: 该错误是因为在程序中存在了冲突声明 "int* p"。冲突的原因可能是在同一个作用域内多次声明了同名的变量或指针。 声明 "int* p" 表示 "p" 是一个指向整数类型的指针。冲突声明可能发生在同一个源文件的不同位置,也可能是在不同的源文件中引用了同名的变量。 为了解决这个冲突,我们需要确定这个变量或指针具体应该代表什么含义,并且确保在同一个作用域内只有一个正确的声明。 一种可能的解决方法是删除多余的声明,只保留需要的声明。另一种方法是给变量或指针添加唯一的标识符,以避免与其他声明产生冲突。例如,可以将指针声明为 "int* p1" 和 "int* p2",以确保它们的唯一性。 此外,还应该检查声明的作用域是否正确。如果声明位于函数内部,则应该确保函数内部不会存在同名的变量或指针。 总结来说,解决 "conflicting declaration 'int* p'" 错误的方法是删除多余的声明、添加唯一的标识符或者检查声明的作用域是否正确。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值