尝试模块化某些标准头文件 c++ 时出现编译错误

问题描述

我正在尝试将一些头文件编译成一个模块,以便我可以使用此编译器选项测试它是否有效:

g++ -fmodules-ts -std=c++20 -c -x c++-system-header <file-name>

其中 <file-name> 是标头的名称,例如 string_view

然而,并不是所有的头文件都能和谐地工作,这个头文件列表不会因为常见的错误而编译,例如不一致的导入宏定义 NULL__stdcall、指向类的递归延迟加载allocator,以及在 vsnprintf 等范围内找不到的 I/O 函数。一些错误通常指向 <pthread.h><process.h> c-headers。

  • <bitset>
  • <memory_resource>
  • <stdexcept>
  • <system_error>
  • <string>
  • <iterator>
  • <ranges>
  • <algorithm>
  • <execution>
  • <complex>
  • <random>
  • <locale>
  • <ios>
  • <istream>
  • <ostream>
  • <iostream>
  • <fstream>
  • <sstream>
  • <syncstream>
  • <iomanip>
  • <streambuf>
  • <filesystem>
  • <regex>
  • <thread>
  • <stop_token>
  • <mutex>
  • <shared_mutex>
  • <future>
  • <condition_variable>
  • <span>

上面没有提到的头文件编译成功。

注意:我使用的是 GCC 11.1 版。


更新

有些头文件是我自己解析的,唯一不能编译的头文件是:

  • <execution>
  • <locale>
  • <iomanip>
  • <filesystem>
  • <thread>
  • <stop_token>
  • <condition_variable>

正如我在上面提到的第一个,他们分享的唯一常见错误NULL不一致导入宏定义

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...