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就可以了

参考:MoreZeus 乐逍遥ing

上一篇下一篇

猜你喜欢

热点阅读