LINUX.ORG.RU

История изменений

Исправление fsb4000, (текущая версия) :

В этом синтаксисе есть какой-то глубокий смысл?

Конечно есть. И да, мы можем просто указывать module с именем.

// math.mpp, декларация
export module math; 

export int add(int fir, int sec);
// math.cpp , реализация
module math;

int add(int fir, int sec){
    return fir + sec;
}

Проблема в том, что в нашем модуле, мы не можем пользоваться include, потому что в модулях нет макросов.

// нельзя
module my_game;
#include <SDL.h>

Мы можем лишь так

module my_game;
import <SDL.h>;

Но это импортирует нам лишь функции и переменные, классы, шаблоны, но не макросы. Но нам нужны макросы. Тогда и решили сделать unnamed module, который не будет экспортироваться, но в котором разрешены #include

module;

#include <windows.h>

// можно и свои макросы определить

module bar;

// Win32 макросы и функции и всё-всё доступно

Если макросы не нужны, то будет как в Java/Pascal.

Исправление fsb4000, :

В этом синтаксисе есть какой-то глубокий смысл?

Конечно есть. И да, мы можем просто указывать module с именем.

// math.mpp, декларация
export module math; 

export int add(int fir, int sec);
// math.cpp , реализация
module math;

int add(int fir, int sec){
    return fir + sec;
}

Проблема в том, что в нашем модуле, который будет экспортирован мы не можем пользоваться include, потому что в модулях нет макросов.

// нельзя
module my_game;
#include <SDL.h>

Мы можем лишь так

module my_game;
import <SDL.h>;

Но это импортирует нам лишь функции и переменные, классы, шаблоны, но не макросы. Но нам нужны макросы. Тогда и решили сделать unnamed module, который не будет экспортироваться, но в котором разрешены #include

module;

#include <windows.h>

// можно и свои макросы определить

module bar;

// Win32 макросы и функции и всё-всё доступно

Если макросы не нужны, то будет как в Java/Pascal.

Исходная версия fsb4000, :

В этом синтаксисе есть какой-то глубокий смысл?

Конечно есть. И да, мы можем просто указывать module с именем.

// math.mpp, декларация
export module math; 

export int add(int fir, int sec);
// math.cpp , реализация
module math;

int add(int fir, int sec){
    return fir + sec;
}

Проблема в том, что в нашем модуле, который будет экспортирован мы не можем пользоваться include, потому что в модулях нет макросов.

// нельзя
module my_game;
#include <SDL.h>

Мы можем лишь так

module my_game;
import <SDL.h>;

Но это импортирует нам лишь функции и переменные, но не макросы. Но нам нужны макросы. Тогда и решили сделать unnamed module, который не будет экспортироваться, но в котором разрешены #include

module;

#include <windows.h>

module bar;

// Win32 макросы и функции и всё-всё доступно.

Если макросы не нужны, то будет как в Java/Pascal.