[QScintilla] Why do header files force C++ linkage on Macs?

Marcus Calhoun-Lopez mcalhoun at macports.org
Tue May 17 14:16:20 BST 2016


I am trying to resolve an issue installing GNU Octave with the MacPorts system.

Octave includes qscilexeroctave.h, which includes a whole bunch of other files until it gets to a header file from Gnulib.
Gnulib attempts to add a security warning to the C functions gets.
Because qscilexeroctave.h wraps everything in “extern "C++",” there is a conflict between the linkages of gets (C vs C++).

A few solutions have been proposed in the various discussions about this problem (see references below).
On solution is to remove the “extern "C++"” from the Qt4Qt5/Qsci/*.h qscintilla header files:

-#ifdef __APPLE__                                                                                                                                                                                           
-extern "C++" {                                                                                                                                                                                             
-#ifdef __APPLE__                                                                                                                                                                                           

For me, qscintilla and Octave both build fine after the change.

Is this a safe change?
Any insight into why forcing C++ linkage is necessary (but just on Macs) would be appreciated.

Is this a change that can be considered upstream?

Thank you,

Bug References:
https://trac.macports.org/ticket/51399 <https://trac.macports.org/ticket/51399>http://octave.1599824.n4.nabble.com/build-failure-on-OSX-10-9-td4659114.html <http://octave.1599824.n4.nabble.com/build-failure-on-OSX-10-9-td4659114.html>
http://savannah.gnu.org/bugs/?43243 <http://savannah.gnu.org/bugs/?43243>
​http://octave.1599824.n4.nabble.com/Building-3-8-0-on-Mountain-Lion-10-8-5-td4660795.html <http://octave.1599824.n4.nabble.com/Building-3-8-0-on-Mountain-Lion-10-8-5-td4660795.html>

Software References:
https://www.gnu.org/software/octave/ <https://www.gnu.org/software/octave/>
https://www.macports.org <https://www.macports.org/>
https://www.gnu.org/software/gnulib/ <https://www.gnu.org/software/gnulib/>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/qscintilla/attachments/20160517/48bb8b4b/attachment.html>

More information about the QScintilla mailing list