MinGW: Define __stdcall&co when -fms-extensions is disabled

G M gmisocpp at gmail.com
Mon Apr 21 15:19:05 PDT 2014


Hi Reid

It seems that after applying patch 206791 with the above title, I get the
errors shown below, where I think I didn't get them before that patch.
I don't know if the patch is incorrect or insufficient or just exposes
issues elsewhere now but it seems to effect my mingw/gcc 4,8.2 environment
on Windows (which I'm using with/to build clang++) builds, so I thought I'd
draw your attention to the error messages in case that helps.

clang is up to date and built from trunk as of right now.

Thanks

c:\test>clang++ -nostdinc++ -I/libcxx/include mm.cpp
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:84:17:
error: expected ';' after top level
      declarator
  _CRTIMP FILE *__cdecl __iob_func(void);
                ^
<built-in>:161:24: note: expanded from here
#define __cdecl cdecl__))
                       ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:141:7:
error: redefinition of 'cdecl__' with a
      different type: 'int' vs 'FILE *' (aka '_iobuf *')
  int __cdecl __mingw_sscanf(const char * __restrict__ _Src,const char *
__restrict__ _Format,...);
      ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:84:17:
note: previous definition is here
  _CRTIMP FILE *__cdecl __iob_func(void);
                ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:141:7:
error: expected ';' after top level
      declarator
  int __cdecl __mingw_sscanf(const char * __restrict__ _Src,const char *
__restrict__ _Format,...);
      ^
<built-in>:161:24: note: expanded from here
#define __cdecl cdecl__))
                       ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:144:7:
error: redefinition of 'cdecl__' with a
      different type: 'int' vs 'FILE *' (aka '_iobuf *')
  int __cdecl __mingw_vsscanf (const char * __restrict__ _Str,const char *
__restrict__ Format,va_list argp);
      ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:84:17:
note: previous definition is here
  _CRTIMP FILE *__cdecl __iob_func(void);
                ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:144:7:
error: expected ';' after top level
      declarator
  int __cdecl __mingw_vsscanf (const char * __restrict__ _Str,const char *
__restrict__ Format,va_list argp);
      ^
<built-in>:161:24: note: expanded from here
#define __cdecl cdecl__))
                       ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:147:7:
error: redefinition of 'cdecl__' with a
      different type: 'int' vs 'FILE *' (aka '_iobuf *')
  int __cdecl __mingw_scanf(const char * __restrict__ _Format,...);
      ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:84:17:
note: previous definition is here
  _CRTIMP FILE *__cdecl __iob_func(void);
                ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:147:7:
error: expected ';' after top level
      declarator
  int __cdecl __mingw_scanf(const char * __restrict__ _Format,...);
      ^
<built-in>:161:24: note: expanded from here
#define __cdecl cdecl__))
                       ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:150:7:
error: redefinition of 'cdecl__' with a
      different type: 'int' vs 'FILE *' (aka '_iobuf *')
  int __cdecl __mingw_vscanf(const char * __restrict__ Format, va_list
argp);
      ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:84:17:
note: previous definition is here
  _CRTIMP FILE *__cdecl __iob_func(void);
                ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:150:7:
error: expected ';' after top level
      declarator
  int __cdecl __mingw_vscanf(const char * __restrict__ Format, va_list
argp);
      ^
<built-in>:161:24: note: expanded from here
#define __cdecl cdecl__))
                       ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:153:7:
error: redefinition of 'cdecl__' with a
      different type: 'int' vs 'FILE *' (aka '_iobuf *')
  int __cdecl __mingw_fscanf(FILE * __restrict__ _File,const char *
__restrict__ _Format,...);
      ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:84:17:
note: previous definition is here
  _CRTIMP FILE *__cdecl __iob_func(void);
                ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:153:7:
error: expected ';' after top level
      declarator
  int __cdecl __mingw_fscanf(FILE * __restrict__ _File,const char *
__restrict__ _Format,...);
      ^
<built-in>:161:24: note: expanded from here
#define __cdecl cdecl__))
                       ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:156:7:
error: redefinition of 'cdecl__' with a
      different type: 'int' vs 'FILE *' (aka '_iobuf *')
  int __cdecl __mingw_vfscanf (FILE * __restrict__ fp, const char *
__restrict__ Format,va_list argp);
      ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:84:17:
note: previous definition is here
  _CRTIMP FILE *__cdecl __iob_func(void);
                ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:156:7:
error: expected ';' after top level
      declarator
  int __cdecl __mingw_vfscanf (FILE * __restrict__ fp, const char *
__restrict__ Format,va_list argp);
      ^
<built-in>:161:24: note: expanded from here
#define __cdecl cdecl__))
                       ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:160:7:
error: redefinition of 'cdecl__' with a
      different type: 'int' vs 'FILE *' (aka '_iobuf *')
  int __cdecl __mingw_vsnprintf(char * __restrict__ _DstBuf,size_t
_MaxCount,const char * __restrict__ _Format,
      ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:84:17:
note: previous definition is here
  _CRTIMP FILE *__cdecl __iob_func(void);
                ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:160:7:
error: expected ';' after top level
      declarator
  int __cdecl __mingw_vsnprintf(char * __restrict__ _DstBuf,size_t
_MaxCount,const char * __restrict__ _Format,
      ^
<built-in>:161:24: note: expanded from here
#define __cdecl cdecl__))
                       ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:164:7:
error: redefinition of 'cdecl__' with a
      different type: 'int' vs 'FILE *' (aka '_iobuf *')
  int __cdecl __mingw_snprintf(char * __restrict__ s, size_t n, const char
* __restrict__  format, ...);
      ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:84:17:
note: previous definition is here
  _CRTIMP FILE *__cdecl __iob_func(void);
                ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:164:7:
error: expected ';' after top level
      declarator
  int __cdecl __mingw_snprintf(char * __restrict__ s, size_t n, const char
* __restrict__  format, ...);
      ^
<built-in>:161:24: note: expanded from here
#define __cdecl cdecl__))
                       ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:167:7:
error: redefinition of 'cdecl__' with a
      different type: 'int' vs 'FILE *' (aka '_iobuf *')
  int __cdecl __mingw_printf(const char * __restrict__ , ... )
__MINGW_NOTHROW;
      ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:84:17:
note: previous definition is here
  _CRTIMP FILE *__cdecl __iob_func(void);
                ^
<built-in>:161:17: note: expanded from here
#define __cdecl cdecl__))
                ^
In file included from mm.cpp:1:
In file included from /libcxx/include\cstdio:100:
c:\mingw\bin\..\lib\clang\3.5.0\../../../x86_64-w64-mingw32/include\stdio.h:167:7:
error: expected ';' after top level
      declarator
  int __cdecl __mingw_printf(const char * __restrict__ , ... )
__MINGW_NOTHROW;
      ^
<built-in>:161:24: note: expanded from here
#define __cdecl cdecl__))
                       ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
c:\test>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140422/221a1ac3/attachment.html>


More information about the cfe-commits mailing list