W dniu 04.12.2017 o 15:02, Derek Buitenhuis pisze: > On 12/4/2017 8:03 AM, Mateusz wrote: >> After commit 3701d49 'error_resilience: remove avpriv_atomic usage' >> we have included windows.h in much more files and we should >> avoid conflicts with defines/function declarations. >> >> Signed-off-by: Mateusz Brzostek <mateu...@poczta.onet.pl> >> --- >> libavcodec/jpegls.h | 4 ++++ >> libavcodec/mss2.c | 6 +++--- >> libavformat/mxfenc.c | 2 +- >> 3 files changed, 8 insertions(+), 4 deletions(-) > > Sprinkling these weird ifdefs and renames around is pretty ugly. Is there > some sort of canonical list on MSDN or something we can use globally-ish? > > - Derek
There is a list of "Predefined Macros" in MSVC -- IMO there are OK https://msdn.microsoft.com/en-us/library/b0084kay(v=vs.140).aspx More danger are macros from windows.h -- there is a list of macros to exclude some parts (from MSDN and windows.h): Define WIN32_LEAN_AND_MEAN to exclude APIs such as Cryptography, DDE, RPC, Shell, and Windows Sockets. /* If defined, the following flags inhibit definition * of the indicated items. * * NOGDICAPMASKS - CC_*, LC_*, PC_*, CP_*, TC_*, RC_ * NOVIRTUALKEYCODES - VK_* * NOWINMESSAGES - WM_*, EM_*, LB_*, CB_* * NOWINSTYLES - WS_*, CS_*, ES_*, LBS_*, SBS_*, CBS_* * NOSYSMETRICS - SM_* * NOMENUS - MF_* * NOICONS - IDI_* * NOKEYSTATES - MK_* * NOSYSCOMMANDS - SC_* * NORASTEROPS - Binary and Tertiary raster ops * NOSHOWWINDOW - SW_* * OEMRESOURCE - OEM Resource values * NOATOM - Atom Manager routines * NOCLIPBOARD - Clipboard routines * NOCOLOR - Screen colors * NOCTLMGR - Control and Dialog routines * NODRAWTEXT - DrawText() and DT_* * NOGDI - All GDI defines and routines * NOKERNEL - All KERNEL defines and routines * NOUSER - All USER defines and routines * NONLS - All NLS defines and routines * NOMB - MB_* and MessageBox() * NOMEMMGR - GMEM_*, LMEM_*, GHND, LHND, associated routines * NOMETAFILE - typedef METAFILEPICT * NOMINMAX - Macros min(a,b) and max(a,b) * NOMSG - typedef MSG and associated routines * NOOPENFILE - OpenFile(), OemToAnsi, AnsiToOem, and OF_* * NOSCROLL - SB_* and scrolling routines * NOSERVICE - All Service Controller routines, SERVICE_ equates, etc. * NOSOUND - Sound driver routines * NOTEXTMETRIC - typedef TEXTMETRIC and associated routines * NOWH - SetWindowsHook and WH_* * NOWINOFFSETS - GWL_*, GCL_*, associated routines * NOCOMM - COMM driver routines * NOKANJI - Kanji support stuff. * NOHELP - Help engine interface. * NOPROFILER - Profiler interface. * NODEFERWINDOWPOS - DeferWindowPos routines * NOMCX - Modem Configuration Extensions */ The most danger are small caps macros defined as empty in minwindef.h: far near pascal cdecl I think it is possible to make in ffmpeg's *.h files which include windows.h something like this: #define WIN32_LEAN_AND_MEAN #define NOMINMAX #define NOGDI #include <windows.h> #undef far #undef near #undef pascal #undef cdecl I will make some test and write back. Mateusz _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel