COIN-OR::LEMON - Graph Library

Opened 4 weeks ago

Last modified 4 weeks ago

#612 new defect

Windows compile issue due to macros IN and OUT

Reported by: kpeter Owned by: alpar
Priority: major Milestone: LEMON 1.4 release
Component: core Version: hg main
Keywords: Cc:
Revision id:

Description

Reported by Szabolcs Horvát on the lemon-user mailing list:

The following problem caused me a lot of frustration, so I thought I'd share the solution with the rest of you.

I had some working LEMON-based code that I wrote on OS X, but then couldn't compile on Windows due to a few mysterious errors that seemed to come from the LEMON headers and not my own code.

The problem turned out to be that I was using LEMON in conjunction with a C library, which in turn includes <windows.h> on Windows (obviously not on OS X), which in turn defines the macros IN and OUT. LEMON uses these same names as template parameters, hence the errors.

A simple
#undef IN
#undef OUT
before including any LEMON headers will fix the problem. Doing this appears to be completely safe (perhaps LEMON could do it by default):
https://stackoverflow.com/questions/35907493/in-and-out-macros-in-minwindef-h

Szabolcs

Attachments (1)

612-cd72eae05bdf.patch (4.1 KB) - added by kpeter 4 weeks ago.

Download all attachments as: .zip

Change History (3)

comment:1 Changed 4 weeks ago by kpeter

I checked the LEMON sources and adaptors.h is the only file that uses IN and OUT as template typenames. I think it would be better to use different names in LEMON source (e.g. In and Out) than adding #undef.

Changed 4 weeks ago by kpeter

comment:2 Changed 4 weeks ago by kpeter

Szabolcs, could you check the attached patch [cd72eae05bdf] if it solves the issue on your machine?

Note: See TracTickets for help on using tickets.