Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


TRADCPP(1)                  General Commands Manual                 TRADCPP(1)

NAME
     tradcpp - traditional (K&R-style) C macro preprocessor

SYNOPSIS
     tradcpp [-options] [input-file [output-file]]

DESCRIPTION
     The tradcpp command provides a traditional K&R-style C macro
     preprocessor.  It is intended to be suitable for historical Unix uses of
     the preprocessor, such as imake(1), particularly those that depend on
     preservation of whitespace.

     The chief ways in which traditional cpp differs from Standard C are:

              Macro arguments are expanded within quoted strings.  There is
               no stringize operator.

              There is no token pasting operator; tokens can be concatenated
               by placing comments between them.  This process is also not
               limited to valid C language tokens.

              Whitespace is preserved, and in particular tabs are not
               expanded into spaces.  Furthermore, additional whitespace is
               not injected.

OPTIONS
     tradcpp has many options, many of which are defined for compatibility
     with gcc(1) or other compilers.  Many of the options are not yet
     implemented.

   Common Options
     -C            Retain comments in output.

     -Dmacro[=expansion]
                   Provide a definition for the named macro.  If no expansion
                   is provided, the value "1" is used.  Note that like many
                   Unix compilers, tradcpp does not accept a space between the
                   "D" and the macro name.

     -Ipath        Add the specified path to the main list of include
                   directories.  Note that like many Unix compilers, tradcpp
                   does not accept a space between the "I" and the directory
                   name.

     -nostdinc     Do not search the standard system include directories.

     -P            Suppress line number information in the output.  Currently
                   line number information is not generated at all and this
                   option has no effect.

     -Umacro       Remove any existing definition for the named macro.  Note
                   that like many Unix compilers, tradcpp does not accept a
                   space between the "U" and the macro name.

     -undef        Remove all predefined macros.

   Warning Options
     Warning options can be disabled or enabled by inserting, or not, the
     string "no-" between the "W" and the warning name.  Herein the "-Wno-"
     form is shown for options that are enabled by default.

     -Wall         Turn on all warnings.  The option -Wno-all disables only
                   the warnings that are disabled by default.

     -w            Turn off all warnings.

     -Werror       Make warnings into fatal errors.

     -Wcomment     Warn about nested comments.

     -Wno-endif-labels
                   Don't warn about symbols attached to #endif directives.
                   (The warning is currently not implemented.)

     -Wundef       Warn about undefined symbols appearing in #if and #elif
                   expressions.

     -Wunused-macros
                   Warn about macros that are defined and never used.  Not
                   implemented.

   Depend Options
     -M            Generate dependency information for make(1) on the standard
                   output, instead of preprocessing.  Not implemented.

     -MD           Like -M but skip system headers.  Not implemented.

     -MM           Like -M but write the dependency information to a file
                   named after the input file with extension .d and preprocess
                   normally to standard output.  Not implemented.

     -MMD          Like -MM but skip system headers.  Not implemented.

     -MF file      Send dependency output to the named file instead of the
                   default location.  Not implemented.

     -MG           When generating dependency information, assume that missing
                   files are generated instead of failing.  Not implemented.

     -MP           Issue dummy rules for all include files.  This prevents
                   make(1) from choking if an include file is removed.  Not
                   implemented.

     -MQ target    Same as -MT except that any make(1) metacharacters
                   appearing in the target are escaped.

     -MT target    Set the name of the make(1) target appearing in the
                   generated dependency information.  The default is the name
                   of the input file with its suffix replaced with the suffix
                   for object files, normally .o.

   More Include Path Options
     -idirafter path
                   Add the specified path to the "afterwards" include path.
                   This path is searched after all directories specified with
                   -I and the standard system directories.  Directories on
                   this path are treated as containing system include files.

     -imacros file
                   Read in file prior to reading the main input file, and
                   preprocess it, but throw away the output and retain only
                   the macro definitions.

     -include file
                   Read in and preprocess file prior to reading the main input
                   file.

     -iprefix prefix
                   Set the path prefix used with the -iwithprefix option.

     -iquote path  Add path to the list of directories searched for include
                   directives written with quotes.  This list is not searched
                   for include directives written with angle brackets.

     -iremap string:replacement
                   Substitute replacement for string in the __FILE__ built-in
                   macro.  Not supported.

     -isysroot path
                   Use path as the "system root", that is, the directory under
                   which the standard system paths are found.

     -isystem path
                   Add path to the list of system include directories.  This
                   list is searched after the list given with I.  Files found
                   on this path are treated as system headers.

     -iwithprefix dir
                   Splice dir onto the prefix given with -iprefix and add this
                   directory as if it were specified with -idirafter.

     -iwithprefixbefore
                   Like -iwithprefix but adds the result as if it were
                   specified with -I.

   Diagnostic Options
     -debuglog file
                   Write a trace of actions and operations to file as the
                   input is processed.  Meant for debugging problems in
                   complex substitution schemes fed to tradcpp, such as those
                   used by imake(1).

     -dD           Dump all macro definitions, except for the predefined
                   macros, after the normal preprocessing output.  Not
                   implemented.

     -dI           Dump all include directives along with the normal
                   preprocessing output.  Not implemented.

     -dM           Dump all macro definitions instead of the normal
                   preprocessing output.  Not implemented.

     -dN           Like -dD but emits only macro names and not the expansions.
                   Not implemented.

     -H            Output a trace of the include tree as it gets processed.
                   Not implemented.

   Other Options
     -CC           Retain comments in output.  Same as -C, accepted for
                   compatibility with gcc(1).

     -fdollars-in-identifiers, -fno-dollars-in-identifiers
                   Enable (or disable, respectively) the use of the dollar
                   sign in identifiers.  Not implemented.

     -ftabstop=num
                   Set the tab width to the specified value, for reporting
                   column positions in diagnostics.  The default is 8.  Not
                   implemented.

     -std=standard
                   Ask tradcpp to conform to the named standard.  The default,
                   and the only supported value, is "krc".

     -traditional  This option is accepted for compatibility with gcc(1) and
                   ignored.

     -x lang       Adjust the preprocessor for the given language.  The only
                   values accepted for lang are "assembler-with-cpp" and "c",
                   neither of which have any effect on the behavior of
                   tradcpp.

FILES
     The default list of directories searched for include files is:
           /usr/local/include
           /usr/include

SEE ALSO
     cc(1), cpp(1), make(1)

STANDARDS
     None.  The whole point of a traditional cpp is that it reflects practices
     in pre-standardization implementations of C.  Some information is
     available from the first edition of Kernighan and Ritchie.  Much of the
     rest of the behavior is based on lore, pragmatism, material encountered
     in the wild, and comparison to other implementations.

HISTORY
     The original version of tradcpp was written one evening in late 2010.
     This version had some problems and was put aside.  The first working
     version was released in June 2013.

BUGS
     Probably plenty.

NetBSD 10.99                     June 11, 2013                    NetBSD 10.99