[ https://issues.apache.org/jira/browse/THRIFT-705?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12907189#action_12907189 ]
Mina Naguib commented on THRIFT-705: ------------------------------------ By the way, this issue, indirectly, causes breakage when using thrift to generate code for the cassandra interface file. It just so happens that the cassandra.thrift file declares: const string VERSION = "2.2.0" When thrift cpp code is generated, the cassandra_constants.h file contains: std::string VERSION; However, if the program that includes that file uses autotools, that file will get compiled with -DHAVE_CONFIG. This will trickle down to the thrift headers themselves, which will then import thrift's own config.h, which has this: #define VERSION "0.4.0" And so, VERSION is substituted back in cassandra_constants.h, making the post-preprocessor output: std::string "0.4.0"; Which is a syntax error, and will not compile. I actually ran into this issue maintaining libcassandra (a C++/C client API) and had to manually tweak the generated CPP code to make it compile. > Installed C++ header files depend on "config.h" which may have conflicting > macros with the (autoconf based) C++ project using Thrift. > ------------------------------------------------------------------------------------------------------------------------------------- > > Key: THRIFT-705 > URL: https://issues.apache.org/jira/browse/THRIFT-705 > Project: Thrift > Issue Type: Bug > Components: C++ - Library > Environment: Any Thrift compatible C++ compiler environment. > Reporter: Teemu Koponen > Attachments: config-h-patch.diff, config_h_patch-r991496.diff > > > The public, installed Thrift C++ header files depend on an autoconf generated > system specific 'config.h' header file. Unfortunately, having this header > file as a part of the library headers is generally troublesome. For example, > see: > http://sources.redhat.com/autobook/autobook/autobook_96.html > Attached is a patch that relies on an alternative, simpler approach based on > AX_PREFIX_CONFIG_H, which adds a package prefix to both config.h file name > and to the macros defined within: > http://www.nongnu.org/autoconf-archive/ax_prefix_config_h.html > The resulting thrift-config.h can be installed and included safely from C++ > applications having their own config.h. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.