Skip to content

Commit

Permalink
Fixed bug #66009 Failed compilation of PHP extension with C++ std lib…
Browse files Browse the repository at this point in the history
…rary using VS 2012

Visual Studio 2012 includes sanity checks for C++11 features, see
http://msdn.microsoft.com/en-us/library/vstudio/bb531344(v=vs.110).aspx
To fix the 'inline' keyword redefinition for C++ in debug mode, the
new macros ZEND_WIN32_KEEP_INLINE is introduced, ZEND_WIN32_FORCE_INLINE is
automatically appended in release mode.
  • Loading branch information
weltling committed Jan 4, 2014
1 parent 250ee4c commit 19aafe4
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 10 deletions.
9 changes: 1 addition & 8 deletions TSRM/tsrm_config.w32.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#define TSRM_CONFIG_W32_H

#include <../main/config.w32.h>
#include "Zend/zend_config.w32.h"

#define HAVE_UTIME 1
#define HAVE_ALLOCA 1
Expand All @@ -11,12 +12,4 @@
#include <stdlib.h>
#include <crtdbg.h>

#undef inline
#ifdef ZEND_WIN32_FORCE_INLINE
# define inline __forceinline
#else
# define inline
#endif


#endif
9 changes: 7 additions & 2 deletions Zend/zend_config.w32.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,15 @@ typedef unsigned int uint;
/* This will cause the compilation process to be MUCH longer, but will generate
* a much quicker PHP binary
*/
#undef inline
#ifdef ZEND_WIN32_FORCE_INLINE
/* _ALLOW_KEYWORD_MACROS is only relevant for C++ */
# if (_MSC_VER >= 1700) && !defined(_ALLOW_KEYWORD_MACROS)
# define _ALLOW_KEYWORD_MACROS
# endif
# undef inline
# define inline __forceinline
#else
#elif !defined(ZEND_WIN32_KEEP_INLINE)
# undef inline
# define inline
#endif

Expand Down

0 comments on commit 19aafe4

Please sign in to comment.