Emscripten and C++ 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)

有什么方法可以使用c++ 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

添加标志-std=c++20 worked

来源:@Someprogrammerdude @MarcGlisse

最新更新