On this page:
1.1 Getting Started
1.2 Libraries Provided by this Package
1.3 Known Limitations
1.4 Feedback and Bug Reports
1.5 History
Version: 4.1.4.2

1 C Metaprogramming Utilities

This package provides utilities for manipulating C programs.

1.1 Getting Started

The easiest way to get started using the C metaprogramming utilities is with the main module:

 (require (planet dherman/c:1:0))

This module provides everything in the entire package. Subsequent sections of this manual describe the functionality of the individual libraries included, which can also be required individually.

Examples:

  > (define time.h
      (header
       (struct tm ([int tm_sec]
                   [int tm_min]
                   [int tm_hour]
                   [int tm_mday]
                   [int tm_mon]
                   [int tm_year]
                   [int tm_wday]
                   [int tm_yday]
                   [int tm_isdst]))))
  > (define time
      (compile-header time.h
                      (system-compiler #:include<> '("time.h") gcc)))
  > (layout-offset (time 'tm) 'tm_year)

  20

1.2 Libraries Provided by this Package

This package includes:

1.3 Known Limitations

The parser is ad-hoc and handles only a limited subset of C. The AST definition is incomplete.

The parser does not, and likely never will, recognize the C preprocessor.

1.4 Feedback and Bug Reports

Before sending feedback or bug reports, please consult the current set of registered issues. If you cannot find your issue there, feel free to file a new bug report in the online issue database.

Any other feedback may be emailed to me, Dave Herman, at dherman@ccs.neu.edu.

1.5 History