[cfe-users] Clang compilation options to solve the comaptible issue?

Richard Smith via cfe-users cfe-users at lists.llvm.org
Sun Nov 3 09:47:55 PST 2019


On Thu, 31 Oct 2019 at 01:45, Guofeng Zhang via cfe-users <
cfe-users at lists.llvm.org> wrote:

> Hi,
>
> I just stat using clang 8 not long ago. I  need to compile our old c++
> source without changing it. It is compiled with Visual Studio before. Now I
> want to migrate to clang as the compiler.
>
> The following code segement can be compiled by clang:
>
> 1)  for (int i = 0 ; i < 6 ; i++ ) {
>         ....
>      }
>      int k = i ;  // compiler error
>

This code is relying on pre-standard C++ for loop scoping behavior (the
code has been invalid for all 21 years of standard C++). Clang does not
support this pre-standard behavior.


> 2) unsigned short *s = ....
>     wchar_t  *t = s ; // compiler error
>
> I tried -ffor-scope and -fshort-wchar, but does not solve the issues.
>
> are there clang compilation options to solve the issues?
>

For the latter, something like "-Dwchar_t=unsigned short" might mostly
work. (It won't support things like "wchar_t x = wchar_t(123);" though --
to support that you could put "typedef unsigned short my_wchar_t; #define
wchar_t my_wchar_t" into a -include'd header.)

Generally. if you have the combination of ancient pre-standard C++ code
that is invalid under any ISO C++ standard, and a requirement that you do
not modify the code, you're going to have problems. Sorry. That said, Clang
itself is open-source and modifiable, and it should be straightforward to
add support for the above two constructs to Clang and build your own
compiler that could perhaps accept this code. I'm not sure we'd want to
accept patches for those non-standard behaviors upstream, though.

Thanks for your help very much,
>
> Guofeng
> _______________________________________________
> cfe-users mailing list
> cfe-users at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20191103/8eba944c/attachment.html>


More information about the cfe-users mailing list