inclyc added a comment.

> That is OK for glibc system because glibc includes this file manually. But 
> with other libc (e.g. musl), which does not manually include this, clang will 
> fail but GCC can get it compiled.

FWIW currently we cannot build libedit using clang on x86_64-unknown-linux-musl 
and to fix this issue, they have a workaround here 
https://patchwork.ozlabs.org/project/buildroot/patch/1452127277-9538-1-git-send-email-sergio.pr...@e-labworks.com/
 which manually defined `__STDC_ISO_10646__`

Reproducer:

  #include <stdio.h>
  // #include <stdc-predef.h>
  
  int main() {
          printf("%d", __STDC_ISO_10646__);
  }

GCC accepted this code but clang complained `use of undeclared identifier 
'__STDC_ISO_10646__'`

  test.c:5:15: error: use of undeclared identifier '__STDC_ISO_10646__'
          printf("%d", __STDC_ISO_10646__);
                       ^
  1 error generated.

Note that glibc includes `stdc-predefs.h` at the source-code level, so this 
problem cannot be reproduced on the glibc-based systems. (The header `stdio.h` 
actually #includes `stdc-predefs.h` in glibc!)

However if we do not #include `stdio.h`, different behaviors can be seen on 
glibc platforms.

  int main() {
    return __STDC_ISO_10646__;
  }

See https://godbolt.org/z/Gd9Kbn766.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D137043/new/

https://reviews.llvm.org/D137043

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to