Constant literals are objects containing constant literal text which can be placed by the compiler into read-only memory.
They are also referred to as literal descriptors. They are not true descriptors, they are not derived from the descriptor classes, but they do have conversion operators so that they can be passed to any function which takes a const TDesC16& type, a const TDesC8& type or a const TDesC& type.
Constant literal descriptors are constructed using the macros:
The _L16, _L8 and _L macros, which perform a similar function, are retained for compatibility purposes, but all production code that requires literal text should use literal descriptors.
This macro constructs the 16 bit variant constant literal descriptor for Unicode strings. The literal descriptor object is an instance of a TLitC16 class and the macro generates const static TLitC16 in the C++ code.
This macro constructs the 8 bit variant constant literal descriptor for non-Unicode strings. The literal descriptor object is an instance of a TLitC8 class and the macro generates const static TLitC8 in the C++ code.
This macro constructs the build independent type constant literal descriptor. The literal descriptor object is an instance of a TLitC class and the macro generates const static TLitC in the C++ code. By using this type, the appropriate variant, either 16 bit or 8 bit is selected at build time depending on whether the _UNICODE macro has been defined or not.