Where Multibyte Characters Are Supported

In the examples that follow, multibyte_char represents any string of one or more multibyte characters.

String Literals and Character Constants
Multibyte characters are supported in string literals and character constants. Strings containing multibyte characters are treated in essentially the same way as strings without multibyte characters. Multibyte characters can appear in several contexts:

Wide-character strings can be manipulated the same way as single-byte character strings. The system provides equivalent wide-character and single-byte string functions.

The default storage type for all string literals is read-only. The -qro option sets the storage type of string literals to read-only, and the -qnoro option makes string literals writable.

Note: Because a character constant can store only 1 byte, avoid assigning multibyte characters to character constants. Only the last byte of a multibyte character constant is stored. Use a wide-character representation instead. Wide-character string literals and constants must be prefixed by L. For example:

wchar_t *a = L"wide_char_string" ;
wchar_t b = L'c'

String literals and character constants are described in AIX Version 4: Language Reference. The # and ## operators, preprocessor directives, and macro definitions are also described there.

Preprocessor Directives
The following preprocessor directives permit multibyte-character constants and string literals:

These and other preprocessor directives are described in AIX Version 4: Language Reference.

Macro Definitions
Because string literals and character constants can be part of #define statements, multibyte characters are also permitted in both object-like and function-like macro definitions.

Compiler Options
Multibyte characters can appear in the compiler suboptions that take file names as arguments:

The -D name=definition option permits multibyte characters in the definition of the macro name. In the following example, the first definition is a string literal, and the second is a character constant:

-DMYMACRO="kpsmultibyte_chardcs"
-DMYMACRO='multibyte_char'

The -qmbcs compiler option permits both double-byte and multibyte characters. In other respects, it is equivalent to the -qdbcs option, but it should be used when multibyte characters appear in the program.

The listings produced by the -qlist and -qsource options display the date and time for the appropriate international language. Multibyte characters in the file name of the C or C++ source file also appear in the name of the corresponding list file. For example, a C source file called:

multibyte_char.c

gives a list file called

multibyte_char.lst

File Names and Comments
Any file name can contain multibyte characters. The file name can be a relative or absolute path name. For example:

#include<multibyte_char/mydir/mysource/multibyte_char.h>
#include "multibyte_char.h"

xlC /u/myhome/c_programs/kanji_files/multibyte_char.c
-omultibyte_char

Multibyte characters are also permitted in comments, if you specify the -qmbcs compiler option. Comments are described in AIX Version 4: Language Reference.

Restrictions



National Language Support in IBM C and C++ Compilers
Where Multibyte Characters are Supported
dbcs Compiler Option
mbcs Compiler Option