namespace cpp

C++ lernen, kennen, anwenden




How to use C++20 modules in GNU g++-11

using gcc11-20210124-32.exe (Windows build from (Warning: This is experimental!)

module definition

#include headers in the global module fragment

#include <iostream>
// ...

before module module_name; or import them after that:

export module greetings;
import <iostream>;  
export auto say_hello()
    std::cout << "Hello, modules!\n";   

module interface unit

Every module consists of exactly one module interface unit export module module_name; after which it declares which names should be exported, and eventually other module implementation units (source files) starting with module module_name; (without export).

import module

by its module name if you want to use the contents of a module

import greetings;
int main()

Prepare (std) header unit(s)

before compiling modularized source code containing e.g. import <iostream>;

g++ -fmodules-ts -std=c++20 -c -x c++-system-header iostream

Other options are c++-header and c++-user-header (uses #include path).

Compile program

with option -fmodules-ts in c++20 mode:

g++ greetings.cpp main.cpp -fmodules-ts -std=c++20

Done! Start program:

> a.exe
Hello, modules!

Further reading

howto/modules_gcc11.txt · Zuletzt geändert: 2021-02-01 19:44 von rrichter