Применяются ли ограничения на операторы во фрагменте глобального модуля только к предварительной обработке ДО, а не ПОСЛC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Применяются ли ограничения на операторы во фрагменте глобального модуля только к предварительной обработке ДО, а не ПОСЛ

Сообщение Anonymous »

Я думаю, общеизвестно, что во фрагменте глобального модуля не может быть операторов и что фрагмент глобального модуля ограничен только директивами «препроцессора». С:

Код: Выделить всё

module;

int a = 3;

export module my_module;
Clang 22 по-прежнему не выдает предупреждение (по крайней мере, с настройками по умолчанию), но MSVC говорит:

C5202 фрагмент глобального модуля может содержать только директивы препроцессора
.

Хорошо, это достаточно справедливо. Но если я включу файл заголовка с:

Код: Выделить всё

// my_header.h
int a = 2;
И сделайте:

Код: Выделить всё

module;
#include "my_header.h"
export module my_module;
И никаких предупреждений больше не выдается. Таким образом, требование о том, что фрагмент глобального модуля может содержать только директивы препроцессора, а не операторы или типы, по-видимому, применяется только ДО завершения предварительной обработки, и поэтому:

Код: Выделить всё

/* PROHIBITED */
module;
int a = 3;
export module my_module;

/* THIS IS OK */
module;
#include "header_with_my_variable_declared.h"
export module my_module;
Таким образом, ограничение на то, что можно и что нельзя разрешить в «фрагменте глобального модуля», применимо только к вещам в том виде, в каком они сейчас есть ДО предварительной обработки, но ПОСЛЕ в основном там может быть что угодно, верно? Или неверно?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -to-before
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»