# Understanding File Extensions

## Input File Extensions

The Intel® C++ Compiler Classic recognizes input files with the extensions listed in the following table:

File Name | Interpretation | Action
--- | --- | ---
file.c | C source file | Passed to compiler
file.C file.CC file.cc file.cpp file.cxx | C++ source file | Passed to compiler
file.lib (Windows*) file.a file.so (Linux* and macOS*) file.dylib (macOS*) | Library file | Passed to linker
file.i | Preprocessed file | Passed to compiler
file.obj (Windows) file.o (Linux and macOS*) | Object file | Passed to linker
file.asm (Windows) file.s (Linux and macOS*) file.S (Linux and macOS*) | Assembly file | Passed to assembler

## Output File Extensions

The Intel® C++ Compiler Classic produces output files with the extensions listed in the following table:

File Name | Description
--- | ---
file.i | Preprocessed file: Produced with the -P option.
file.o (Linux and macOS*) file.obj (Windows) | Object file: Produced with the -c (Linux, macOS*, and Windows) object. The /Fo (Windows) or -o (Linux) option allows you to rename the output object file.
file.s (Linux and macOS*) file.asm (Windows) | Assembly language file: Produced with the -S option. The /Fa (Windows) or -s (Linux) option allows you to rename the output assembly file.
a.out (Linux and macOS*) file.exe (Windows) | Executable file: Produced by the default compilation. The /Fe (Windows) or -o (Linux) option allows you to rename the output executable file.

Parent topic: Using the Command Line

## See Also

Invoking the Compiler
Specifying Object Files
Specifying Assembly Files