[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: C++ help needed (Was: Bug#853375: disulfinder: ftbfs with GCC-7)



Hi,

On 26/08/17 21:08, Andreas Tille wrote:
> Hi,
> 
> I moved disulfinder to Git[1] and tried to track down this issue with my
> limited C++ knowledge but failed.  The issue is
> 
> ...
> make[3]: Entering directory '/build/disulfinder-1.2.11/disulfind/src'
> g++ -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/build/disulfinder-1.2.11=. -fstack-protector-strong -Wformat -Werror=format-security -DDEFAULT_PKGDATADIR=\"/usr/share/disulfind
> In file included from Input/utils.h:1:0,
>                  from Input/GlobalDescriptor.cpp:3:
> Input/../Common/Matrix.h: In constructor 'Matrix<DATATYPE>::Matrix(int, int, DATATYPE*)':
> Input/../Common/Matrix.h:208:3: error: 'Exception' has not been declared
>    Exception::Assert(nrows>0 && ncols>0,"construction of empty matrix");
>    ^~~~~~~~~

The problem is the include guard in Exception.h.

Common/Exception.h:
#define __EXCEPTION_H

By luck, this happens to collide with the include guard used by gcc-7's
exception.h header which is pulled in by some standard library includes.

/usr/include/c++/7/bits/exception.h:
#define __EXCEPTION_H 1

This means that nothing from Exception.h ever gets defined if
exception.h gets included first. disulfind is wrong here because the C++
standard explicitly states that all identifiers beginning with two
underscores are reserved.

Thanks,
James

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: