-
Notifications
You must be signed in to change notification settings - Fork 156
C99 Compliance
Jiří Malák edited this page Sep 15, 2021
·
34 revisions
C99 compatibility is an undocumented feature, since the implementation is not complete. Use the -za99 switch to turn on the C99 extensions that are implemented (see below).
When and if other C99 features will be added depends purely on how much effort contributors want to invest. Some features are fairly esoteric and there appears to be little or no demand for them (eg. complex math). The features most likely to be implemented are the ones that add new functionality that cannot be achieved through other means (eg. hex floating-point constants).
Feature | Status | Notes |
---|---|---|
restricted character set support via digraphs | partialy | not fully :> is used as OW operator |
restricted character set support via <iso646.h> | yes | |
restricted character set support via trigraphs | yes | |
wide character library support in <wchar.h> and <wctype.h> | yes | |
restricted pointers | yes | with -za99 option |
more precise aliasing rules via effective type | ??? | |
variable length arrays | - | |
flexible array members | - | |
static and type qualifiers in parameter array declarators | - | |
complex and imaginary support | yes | including <complex.h> |
type-generic math macros in <tgmath.h> | - | |
the long long int type and library functions | yes | |
increased minimum translation limits | yes | generally no fixed limits in compiler |
additional floating-point characteristics in <float.h> | yes | |
remove implicit int | yes | diagnosed via W304, W305 |
remove implicit function declaration | yes | diagnosed via W131 |
return without expression not permitted in function that returns a value (and vice versa) | yes | diagnosed via W107, E1051, E1096 |
reliable integer division | ??? | |
universal character names (\u and \U) | - | |
extended identifiers | yes | all characters of an identifier are significant |
hexadecimal floating-point constants | yes | |
%a and %A printf/scanf conversion specifiers | yes | |
compound literals | - | |
designated initializers | yes | |
// comments | yes | |
extended integer types and library functions | yes | include <inttypes.h> and <stdint.h> |
preprocessor arithmetic done in intmax_t/uintmax_t | yes | by -za99 option |
mixed declarations and code | yes | |
new block scopes for selection and iteration statements | ??? | |
integer constant type rules | ??? | |
integer promotion rules | ??? | |
macros with a variable number of arguments | yes | |
the vscanf family of functions | yes | include <stdio.h> and <wchar.h> |
additional math library functions in <math.h> | partial | |
treatment of error conditions by math library functions (math_errhandling) | ??? | |
floating-point environment access in <fenv.h> | yes | |
trailing comma allowed in enum declaration | yes | |
%lf conversion specifier allowed in printf | ??? | |
inline functions | yes | |
boolean type _Bool | yes | by -za99 option |
<stdbool.h> header file | yes | |
empty macro arguments | yes | |
new structure type compatibility rules (tag compatibility) | ??? | |
additional predefined macro names | ??? | |
_Pragma preprocessing operator | yes | |
standard pragmas | ??? | |
__func__ predefined identifier | yes | |
va_copy macro | yes | |
additional strftime conversion specifiers | yes | |
LIA compatibility annex | ??? | |
deprecate ungetc at the beginning of a binary file | ??? | |
remove deprecation of aliased array parameters | ??? | |
conversion of array to pointer not limited to lvalues | ??? | |
relaxed constraints on aggregate and union initialization | yes | by -aa option |
relaxed restrictions on portable header names | yes |
-
means not yet implemented
???
means unclear
- Welcome
- Building
- Open Watcom Documentation
- Notes
- Relicensing effort
- Debugging
- OW tools usage Overview
- OW tools usage with CMake
- OW tools usage with Visual Studio Code
- Open Watcom 1.9 Wiki
OW Development
WGML Development
- WGML
- Augmented Devices
- Binary Device Files
- Common File Blocks
- COP Files
- Device File Blocks
- Device Function Language
- Device Function Notes
- Device Functions
- Directory File Format
- Drawing Boxes
- Driver File Blocks
- File and Directory Names
- Font File Blocks
- Fonts
- GML Tag Notes
- Keyword Statistics
- Macros and User Defined Tags
- Meta Data
- Page Layout Subsystem
- Search Paths
- Sequencing
- System Symbol Notes
- Tabs and Tabbing
- whpcvt Utility interaction