This chapter introduces some things you need to know before writing the C/C++ side files of a C-friendly FFI.
## Header File Structure
Writing the C/C++ side of a C-friendly FFI requires two kinds of header files: the C headers and the C++ headers. Each kind may contain any number of individual header files.
The C headers are a simple wrapper around the FFI surface. They must be loadable correctly in both C and C++ translation units.
It is important that the C++ headers are wrappers around the C headers, not rewrites of them from scratch. The C++ headers build on top of the declarations already provided by the C headers and only add the C++ conveniences.
## Language Standards
The C headers target the C11 language standard.
The C++ headers target the C++17 language standard.