From 754bbf7a25a8dda49b5d08ef0d0443bbf5af0e36 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 7 Apr 2024 13:41:34 -0500 Subject: new repository --- devdocs/gcc~13/alternate-keywords.html | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 devdocs/gcc~13/alternate-keywords.html (limited to 'devdocs/gcc~13/alternate-keywords.html') diff --git a/devdocs/gcc~13/alternate-keywords.html b/devdocs/gcc~13/alternate-keywords.html new file mode 100644 index 00000000..4d35503d --- /dev/null +++ b/devdocs/gcc~13/alternate-keywords.html @@ -0,0 +1,9 @@ +

6.48 Alternate Keywords

-ansi and the various -std options disable certain keywords. This causes trouble when you want to use GNU C extensions, or a general-purpose header file that should be usable by all programs, including ISO C programs. The keywords asm, typeof and inline are not available in programs compiled with -ansi or -std (although inline can be used in a program compiled with -std=c99 or a later standard). The ISO C99 keyword restrict is only available when -std=gnu99 (which will eventually be the default) or -std=c99 (or the equivalent -std=iso9899:1999), or an option for a later standard version, is used.

The way to solve these problems is to put ‘__’ at the beginning and end of each problematical keyword. For example, use __asm__ instead of asm, and __inline__ instead of inline.

Other C compilers won’t accept these alternative keywords; if you want to compile with another compiler, you can define the alternate keywords as macros to replace them with the customary keywords. It looks like this:

#ifndef __GNUC__
+#define __asm__ asm
+#endif
+

-pedantic and other options cause warnings for many GNU C extensions. You can prevent such warnings within one expression by writing __extension__ before the expression. __extension__ has no effect aside from this.

+

+ © Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
+ https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Alternate-Keywords.html +

+
-- cgit v1.2.3