User Commands msgcpp(1)
NAME
msgcpp - C language message catalog preprocessor
SYNOPSIS
msgcpp [-ACEHMPVX] [-D name[=value]] [-I directory] [-U name]
[-T[length]] [-Y directory] [input [output] ]
DESCRIPTION
msgcpp is a C language message catalog preprocessor. It
accepts cpp(1) style options and arguments. msgcpp
preprocesses an input C source file and emits keyed lines to the output, usually for further processing bymsgcc(1). msgcc output is in the gencat(1) syntax. Candidate message text is determined by arguments to the lastand functions. The msgcpp keyed output lines are:
cmd command command is a candidate for --??keys
option string generation. This is trig-
gered by b_command(int argc, in the
input. def name string name is a candidate variable with string value string.str string string should be entered into the cata-
log. var name If def name occurs then its string value should be entered into the catalog. The input source file is preprocessed with thepp:allpossible option on. This enables non-C semantics. All
source should first be compiled error-free with a real com-
piler before running msgcpp. The following changes are
enabled for the top level files. Included file behavior is not affected.1. All #if, #ifdef and #ifndef branches are enabled.
2. The first definition for a macro is retained, evenwhen subsequent #define statements would normally
redefine the macro. #undef must be used to redefine
a macro. 3. Macro calls with an improper number of arguments are silently ignored.SunOS 5.11 Last change: 9 Oct 2007 1
User Commands msgcpp(1)
4. #include on non-existent headers are silently
ignored. 5. Invalid C source characters are silently ignored. msgcat.h is included if it exists. This file may containmacro definitions for functions that translate string argu-
ments. If foo is a function that translates its string argu-
ments then include the line #define foo _TRANSLATE_ in
msgcat.h, or specify the option -Dfoo=_TRANSLATE_. If bar is
a function that translates string arguments if the firstargument is stderr, then use either #define bar _STDIO_ or
-Dbar=_STDIO_.
The macro _BLD_msgcat is defined to be 1. As an alternative
to msgcat.h, _TRANSLATE_ definitions could be placed inside
#ifdef _BLD_msgcat ... #endif.
OPTIONS The following options are supported:-A Enter the assertion using #assert
--assert=assertion for system V compatibility.
-C Pass comments to the output.
--comments
Comments are omitted by default.-D Define the macro name to have
--define=name[=value] value. This is the only portable
way to pass options through cc to cpp(1). o If =value is omitted, value is assumed to be 1 . o If name begins with :, then it is interpreted asa libpp #pragma pp: state-
ment.o If name begins with %, it
is interpreted as a libpp# directive statement.
o If name begins with a - or
a +, it is interpreted as a libpp option.SunOS 5.11 Last change: 9 Oct 2007 2
User Commands msgcpp(1)
- turns the option on, +
turns it off. o Most options have a#pragma counterpart that
is listed with the option definition.-D-C
pp:compatibilityPreprocess for K&R C compati-
bility.-D-Dlevel
pp:debug level level Set the debug trace level. Specify level as a number greater than or equal to 0.Higher levels produce more out-
put. Levels higher than 3 canonly be enabled in the -g com-
piled versions.-D-Fname
Set the main input file name to name. This only affects the error messages and the line sync output.-D-H
pp:hosted All directories are hosted. Compatibility warning messages from the hosted directory headers are suppressed.-D-I
pp:cdir All directories contain C headers. This option is onlyused only with -D-+.
SunOS 5.11 Last change: 9 Oct 2007 3
User Commands msgcpp(1)
-D-K
pp:keyargsEnable the non-standard
name=value macro argument mode.-D-L[id]
pp:lineid [id] Set the line sync directive id to id. If id is not specified, set to null.-D-M
pp:nomultipleDisable multiple include detec-
tion.-D-P
pp:passthroughEnable the non-standard
passthrough mode. This can beuseful for processing non-C
input.-D-Q
pp:dump Dump macro definitions to the output so that the output may be passed through cpp again. This is used for generating precompiled headers.-D-R
pp:transitionEnable the transition prepro-
cessing mode. This is used for compilers that cannot make up their semantics between K&R and ISO C.SunOS 5.11 Last change: 9 Oct 2007 4
User Commands msgcpp(1)
-D-S
pp:strict Enable strict preprocessing semantics and warnings. Thisworks with any mode (compati-
bility, transition, or the default ISO).-D-Ttest
pp:test test Enable implementation specific test code according to test.-D-W
pp:warn Enable pedantic warnings innon-hosted files.
-D-X[cc]
Preprocess for the cc compiler, which must be an executablepath or an executable on $PATH.
-D-Z
pp:pool Enable pool mode.-D-d
List canonicalized #define
statements for non-predefined
macros in the output.-D-m
List canonicalized #define
statements for all macros. All other output is disabled.SunOS 5.11 Last change: 9 Oct 2007 5
User Commands msgcpp(1)
-D-+
pp:plusplus Preprocess for the C++ dialect.-E Ignored; for compatibility with
--preprocess very old compilers.
-H Emit #include file paths on the
--include-reference standard error, one per line,
indented to show nesting.-I Append directory to the list of
--include[=directory] directories searched for #include
files.If directory is -:
1. -I directories before -I-
are searched only for "..." include files2. -I directories after -I-
are searched for "..." and <"..."> include files 3. the directory . is searched only if it is explicitly specified by an-I option
-I-Cdirectory
pp:cdir directory Mark directory as a C header directory. This option is used with pp:plusplus.-I-D[file]
Read the default probe defini-
tions from file, or ignore the default definitions if file is omitted.SunOS 5.11 Last change: 9 Oct 2007 6
User Commands msgcpp(1)
-I-Hdirectory
pp:hostdir directory Mark directory as a hosted directory. Headers from hosted directories have compatibility warnings disabled.-I-Iheader
pp:ignore header Add header to the list of ignored headers.-I-Mfile
file contains a sequence of header [= "map" ] lines, where header is eitheror "name", and "map" is an expli-
cit binding for header. headeris ignored if = "map" is omit-
ted.-I-Rfile
Include file but do not emit text or line syncs.-I-Sdirectory
Add directory to the default standard include directory list.-I-Tfile
Include file and emit text to the output file. The option value can be omitted.-M Generate make(1S) dependencies.
--dependencies This option is not needed with
nmake.SunOS 5.11 Last change: 9 Oct 2007 7
User Commands msgcpp(1)
The -M option can be followed by
optional flags to change the depen-
dency output styles. The following optional flags are supported: D Generate dependencies in a separate .d file. Preprocessed output is still written to output, or the standard output if output is omitted.G Also generate missing depen-
dencies. M Only generate local header dependencies. Hosted headers are omitted. Hosted headersare determined by the -I-H
option and the --pp:hosted and
pp:hostdir pragmas. No special distinction is made between the "" and <> include styles.-P Emit line syncs.
--sync
Line sync is turned on by default.-P means --nosync.
-T[length] If not gcc, truncate identifiers to
length characters for compatibility with old AT&T compilers.-U Remove the definition for the macro
--undefine=name name.
-V Emit the libpp version.
--version
-X Enable name=value macro arguments
--argmode for easel compatibility.
SunOS 5.11 Last change: 9 Oct 2007 8
User Commands msgcpp(1)
-Y Add directory to the list searched
--standard=directory for #include <...> files.
OPERANDS The following operands are supported: input Specifies C source file to preprocess. output Specifies output file. EXIT STATUS 0 Successful completion. >0 An error occurred.EXAMPLES
Example 1 Using msgcpp to Extract Localizable Strings
The following example uses msgcpp to extract localizable
strings from the file hello.c, marked using theERROR_dictionary(), and writes them to the file hello.mso:
example% cat hello.c
#include
#include
/* * dummy macro to avoid including * libast headers */#define ERROR_dictionary(x) x
int main(int ac, char *av[]) {puts( ERROR_dictionary("hello world") );
puts( ERROR_dictionary("hello all") );
return( EXIT_SUCCESS );
}example% msgcpp -D__STDC__ -D__i386 hello.c hello.mso
example% cat hello.mso
str "hello world"SunOS 5.11 Last change: 9 Oct 2007 9
User Commands msgcpp(1)
str "hello all" AUTHORS Glenn Fowler, gsf@research.att.comATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Availability | developer/astdev ||_____________________________|_____________________________|
| Interface Stability | Volatile ||_____________________________|_____________________________|
SEE ALSO
cpp(1), gencat(1), msgcc(1), msgcvt(1), msggen(1), make(1S), attributes(5)Kernighan, Brian W. and Ritchie, Dennis M., The C Program-
ming Language, Prentice Hall, 1988.SunOS 5.11 Last change: 9 Oct 2007 10