在 Ubuntu 下用 C++ 开发时,“解决冲突”通常有几种常见场景。我先按最常见的情况给你说明,如果你指的是别的情况,可以再补充。
#include <vector>
using namespace std;
// 自己又定义了 vector,会冲突
// vector<int> x; // 报错
✅ 解决方式:
using namespace std;std::vector<int> v;
或自定义命名空间:
namespace mylib {
class Vector { };
}
// a.h
int x = 10;
// b.cpp
#include "a.h"
#include "a.h" // 重复定义
✅ 解决方式:加头文件保护
#ifndef A_H
#define A_H
int x = 10;
#endif
或(推荐):
#pragma once
⚠️ 注意:变量定义不要放头文件,用 extern
// a.h
extern int x;
// a.cpp
int x = 10;
multiple definition of `foo()`
✅ 原因
.cpp 包含✅ 解决
inlineinline void foo() { }
.cpp比如系统有:
/usr/lib/libopencv.so~/opencv/lib/libopencv.so✅ 查看冲突
ldd your_program
✅ 指定库路径
g++ main.cpp -L~/opencv/lib -lopencv_core
或运行时:
export LD_LIBRARY_PATH=~/opencv/lib:$LD_LIBRARY_PATH
比如:
✅ 解决
g++ -std=c++17 main.cpp
<<<<<<< HEAD
int x = 1;
=======
int x = 2;
>>>>>>> branch
✅ 解决
<<<<<<< ======= >>>>>>>git add .
git commit
✅ 是否用了 using namespace std
✅ 头文件是否有 #pragma once
✅ 变量是否写在头文件
✅ 是否混用不同 gcc / 库版本
✅ 是否是 Git 合并冲突
如果你能贴出具体报错信息(编译错误 / 链接错误 / Git 冲突),我可以给你精确修改方案。