corrode
corrode copied to clipboard
macOS: __attribute__
On macOS, I get errors from the system headers due to usages of __attribute__
. I end up just passing -D"__attribute__(x)=/**/"
on the corrode
command line for now to work around this.
That's odd, __attribute__
is supposed to be quietly ignored. Could you provide a minimal example of a declaration that fails, and the error message you get from that declaration?
Hi, I asked about compile failures in your talk today. It looks like this is the same issue. When I try corrode on mac, I get:
/usr/include/string.h:171: (column 52) [ERROR] >>> Syntax Error !
Syntax error !
The symbol `.1' does not fit here.
The relevant code is
#ifndef __CUDACC__
__OSX_AVAILABLE(10.12.1) __IOS_AVAILABLE(10.1)
__TVOS_AVAILABLE(10.0.1) __WATCHOS_AVAILABLE(3.1)
#endif
int timingsafe_bcmp(const void *__b1, const void *__b2, size_t __len);
Line 171 expands to
__attribute__((availability(macosx,introduced=10.12.1))) __attribute__((availability(ios,introduced=10.1)))
where column 52 is the start of the first .1
.
This key seems to be the tiny revision number inside the attribute. 10.0
is fine, but the following example fails to parse:
__attribute__((availability(macos,introduced=10.0.0)))
int foo(void);
but compiles without warning on clang.
This will get better once visq/language-c#19 is resolved (and there's a new language-c up on hackage, etc...)