circAnno安装中的各种报错扫雷
2020-02-25 本文已影响0人
vicLeo
报错一:error: macro "min" passed 3 arguments, but takes just 2 error: expected ‘)’ before ‘const’ 或 error: macro "max" passed 3 arguments, but takes just 2 error: expected ‘)’ before ‘const’
In file included from /usr/include/c++/4.6/bits/char_traits.h:41:0,
from /usr/include/c++/4.6/ios:41,
from /usr/include/c++/4.6/istream:40,
from /share1/linux_1579/include/ospace/std/istream:13,
from /share1/linux_1579/include/ospace/osstd/iterator.h:20,
from /share1/linux_1579/include/ospace/osstd/list.h:16,
from /share1/linux_1579/include/ospace/std/list:15,
from ../../include/stl_tree.h:70,
from ../../include/stl_algobase.h:19,
/usr/include/c++/4.6/bits/ algorithmfwd.h:233:56: error: macro "min" passed 3 arguments, but takes just 2
/usr/include/c++/4.6/bits/stl_algobase.h:254:56: error: macro "max" passed 3 arguments, but takes just 2
解决方法:
这个错误与代码本身或g++版本无关,只是因为出现了宏定义冲突,需要修改对应的XX.h文件:
sudo gedit stl_tree.h
sudo gedit stl_algobase.h
sudo gedit algorithmfwd.h
在对应的XX. h文件头文件后面,和文件自带的`#include<xxx>的中间添加:
#include "xx.h" **该文件自身带有的,勿动**
#undef max **你要添加的项
#undef min **你要添加的项
#include <xxx> **该文件自身带有的,勿动**
保存,关闭,再make
参考:juan131006
[andrew_tu](https://blog.csdn.net/andrew_tu/article/details/7375698)
报错二:error: reference to ‘hash’ is ambiguous
In file included from circAnno.cpp:29:0:
circAnno.h:17:8: error: reference to ‘hash’ is ambiguous
struct hash *readBed12(char *fileName, parameterInfo *paraInfo);
^~~~
In file included from circAnno.cpp:9:0:
../../thirdUtils/kent/src/inc/hash.h:65:8: note: candidates are: struct hash
struct hash
^~~~
In file included from /usr/include/c++/7/bits/stl_bvector.h:1281:0,
from /usr/include/c++/7/vector:65,
from /usr/include/c++/7/queue:61,
from /usr/include/c++/7/bits/stl_algobase.h:68,
from /usr/include/c++/7/bits/char_traits.h:39,
from /usr/include/c++/7/ios:40,
from circAnno.cpp:17:
/usr/include/c++/7/bits/functional_hash.h:58:12: note: template<class _Tp> struct std::hash
struct hash;
^~~~
circAnno.cpp:31:8: error: reference to ‘hash’ is ambiguous
struct hash *
^~~~
解决方法:打开/usr/include/c++/7/bits/functional_hash.h,
sudo gedit functional_hash.h
将其中unctional_hash的一个库注释掉其中
#include hash
那一部分,再make就可以了