Эмскриптен и С++ 20

Похоже, emscripten не поддерживает C++ 20.

Я пытаюсь скомпилировать это:

#include <stdio.h>

#include <span>

using std::span;

int main() {
  int a[2] = {1, 3};

  printf("hello, world!\n");
  return 0;
}

команда:

~/emsdk/upstream/emscripten/em++ ~/Documents/helloWord.cpp

Я получаю это:

error: no member named 'span' in namespace 'std'
using std::span;
      ~~~~~^
1 error generated.
em++: error: '/Users/user/emsdk/upstream/bin/clang++ -target wasm32-unknown-emscripten -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -DEMSCRIPTEN -I/Users/user/emsdk/upstream/emscripten/cache/sysroot/include/SDL --sysroot=/Users/user/emsdk/upstream/emscripten/cache/sysroot -Xclang -iwithsysroot/include/compat /Users/user/Documents/helloWordl.cpp -c -o /var/folders/v4/krr003h50x3_bfpnlpytbdjr0000gn/T/emscripten_temp_n8xk089h/helloWordl_0.o' failed (returned 1)

Могу ли я каким-либо образом использовать функции С++ 20 (в частности, std::span) с emscripten.

Вот подробности версии:

emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 3.1.26 (8eaf19f1c6a9a1b0cd0f9a91657366829e34ae5c)
clang version 16.0.0 (https://github.com/llvm/llvm-project f81f0cb75a2808a67d2662f044ad07628fc9d900)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /Users/user/emsdk/upstream/bin

Вопрос CMake кажется немного не связанным с остальными?

Marcus Müller 20.11.2022 13:44

Какую версию Emscripten вы используете? Возможно, вам нужен какой-то флаг для включения C++20, например, опция -std=c++20 для GCC или Clang?

Some programmer dude 20.11.2022 13:49

@ Rabbid76 Что пошло не так. Я обновил вопрос с полным сообщением об ошибке

Anonymous 20.11.2022 13:56

@Someprogrammerdude Я не могу найти такие флаги на сайте emscipten emscripten.org/docs/tools_reference/emcc.html#emccdoc

Anonymous 20.11.2022 13:58

@Anonymous, в этом документе говорится, что большинство параметров clang/gcc будут работать, так почему бы вам не попробовать -std=c++20, как было предложено?

Marc Glisse 20.11.2022 14:05
Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
0
5
213
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

добавление флага -std=c++20 сработало

Кредит: @Someprogrammerdude @MarcGlisse

Другие вопросы по теме