Skip to content

DigitalMars/dmpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dmpp

dmpp is a small, fast, standalone C preprocessor. It reads source files in C or C++, and generates a preprocessed output file. It is implemented in the D programming language.

Options

Option Description
filename... source file name(s)
-D name[(args)][=value] define macro name
--dep filename generate dependencies to output file
-I path path to #include files
--isystem path path to system #include files
-o filename preprocessed output file
-v verbose

If the output file is not specified:

And the source file has an extension of .c, it will be named after the source file with the extension replaced with .i.

Else if the source file has an extension of .cpp, .cxx, or .hpp, the output file will be the source file with the extension replaced with .ii.

Else the output file will be the source file with .ii appended.

Features:

  • Will process multiple source files at the same time. This increases speed because the contents of #include files are cached.

  • If output files are not specified, a default file name is generated from the source file name with the extension replaced with .i

  • The only predefined macros are __BASE_FILE__, __FILE__, __LINE__, __COUNTER__, __TIMESTAMP__, __DATE__, and __TIME__. Any others desired should be set via the command line.

  • -v uses the following codes for #include files:

Code Description
S system file
' ' normal file read
C file read from cached copy
O file skipped because of #pragma once
G file skipped because of #include guard

Extensions:

  • supports #pragma once
  • supports #pragma GCC system_header
  • supports linemarker output
  • supports ,##__VA_ARGS__ extension which elides the comma
  • __COUNTER__ __BASE_FILE__ predefined macros

Limitations:

  • trigraphs not supported
  • digraphs not supported
  • \u or \U in identifiers not supported
  • C++ alternate keywords not supported
  • multibyte Japanese, Chinese, or Korean characters not supported in source code
  • Unicode (UTF8) not supported in source code

Copyright © 2021 by Digital Mars

Boost License 1.0