This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
Clang: Replacing __attribute((__warning__())) by __attribute__((deprecated()))
- From: Olivier MARTIN <olivier at labapart dot com>
- To: newlib at sourceware dot org
- Date: Sun, 25 Oct 2015 18:31:26 +0000
- Subject: Clang: Replacing __attribute((__warning__())) by __attribute__((deprecated()))
- Authentication-results: sourceware.org; auth=none
Clang does not support the function attribute __warning__(), it raises
the warning message: "warning: unknown attribute '__warning__' ignored"
A solution would be to replace the attribute __warning__() by
deprecated().
Here is the GCC & Clang behaviour with some function attributes:
# The source code:
----------------------------
void func1(void) __attribute__((__warning__ ("the use of `func1' is
dangerous; use `funcN' instead")));
void func2(void) __attribute__((deprecated("Deprecated func2; use
`funcN` instead")));
void func3(void) __attribute__((warning("the use of `func3' is
dangerous; use `funcN' instead")));
int main(void) {
func1();
func2();
func3();
return 0;
}
---------------------------
# With GCC:
---------------------------
mytest.c: In function âmainâ:
mytest.c:7:3: warning: âfunc2â is deprecated (declared at mytest.c:2):
Deprecated func2; use `funcN` instead [-Wdeprecated-declarations]
func2();
^
mytest.c:6:8: warning: call to âfunc1â declared with attribute warning:
the use of `func1' is dangerous; use `funcN' instead [enabled by
default]
func1();
^
mytest.c:8:8: warning: call to âfunc3â declared with attribute warning:
the use of `func3' is dangerous; use `funcN' instead [enabled by
default]
func3();
---------------------------
# With Clang:
---------------------------
mytest.c:1:33: warning: unknown attribute '__warning__' ignored
[-Wunknown-attributes]
void func1(void) __attribute__((__warning__ ("the use of `func1' is
dangerous; use `funcN' instead")));
^
mytest.c:3:33: warning: unknown attribute 'warning' ignored
[-Wunknown-attributes]
void func3(void) __attribute__((warning("the use of `func3' is
dangerous; use `funcN' instead")));
^
mytest.c:7:3: warning: 'func2' is deprecated: Deprecated func2; use
`funcN` instead [-Wdeprecated-declarations]
func2();
^
mytest.c:2:6: note: 'func2' has been explicitly marked deprecated here
void func2(void) __attribute__((deprecated("Deprecated func2; use
`funcN` instead")));
^
3 warnings generated.
---------------------------
Here is the list of the function attributes supported by clang:
- http://clang.llvm.org/docs/LanguageExtensions.html
- http://clang.llvm.org/docs/AttributeReference.html
Are you happy by my suggestion of replacing __attribute((__warning__()))
by __attribute__((deprecated()))?
I am happy to send a patch if needed.
Thanks,
--
Olivier MARTIN
http://labapart.com