Discussion:
[Firebird-odbc-devel] a compilation error about string literals in the version 2.0.4 (155)
m***@beroal.in.ua
2017-04-17 07:10:23 UTC
Permalink
Hello. When compiling the version 2.0.4 (155) of OdbcJdbc for Linux
(ArchLinux, package: https://aur.archlinux.org/packages/firebird-odbc/
), a compilation error appears. AFAIK, it appears because GCC moved to
the "C++11" standard, and the source code is not compatible with this
standard. The source code includes macros for string literals that clash
with the new C feature called "user-defined literals", see
http://en.cppreference.com/w/cpp/language/user_literal . I am not
familiar with this obscure feature, so I am not able to fix the source
code. Instead, I give GCC a parameter to parse the source code with the
old standard "C++03". I patched
"OdbcJdbc/Builds/Gcc.lin/makefile.linux". IMO, the source code should be
fixed in the near future.

The error message: {{{
In file included from ../../IscDbc/IscDatabaseMetaData.cpp:47:0:
../../IscDbc/IscDatabaseMetaData.cpp: In member function ‘virtual const
char* IscDbcLibrary::IscDatabaseMetaData::getDriverVersion()’:
../../IscDbc/../SetupAttributes.h:139:65: помилка: unable to find string
literal operator ‘operator""buildnum’ with ‘const char [7]’, ‘long
unsigned int’ arguments
#define BUILD_DRIVER_VERSION(major,minor,buildnum)
major"."minor"."buildnum
^
../../IscDbc/../SetupAttributes.h:150:25: зауваження: in expansion of
macro ‘BUILD_DRIVER_VERSION’
#define DRIVER_VERSION BUILD_DRIVER_VERSION( ZERO_MAJOR BUILD_STR2(
MAJOR_VERSION ), ZERO_MINOR BUILD_STR2( MINOR_VERSION ), ZERO_BUILDNUM
BUILD_STR2( BUILDNUM_VERSION ) )
^~~~~~~~~~~~~~~~~~~~
../../IscDbc/IscDatabaseMetaData.cpp:350:9: зауваження: in expansion of
macro ‘DRIVER_VERSION’
return DRIVER_VERSION;
^~~~~~~~~~~~~~
make: *** [makefile.linux:127: Release_x86_64/obj/IscDatabaseMetaData.o]
Помилка 1
}}}

Loading...