我是 C++ 新手,阅读了 C++ 11 中提供的大括号初始值设定项。我尝试创建一个简单的联合,如下所示
union UExample {
UExample(const uint12_t value = 0) : raw{value} {}
uint12_t raw;
};
当我尝试编译文件时出现此错误
./stack.h:18:57: error: expected member name or ';' after declaration specifiers
UBankedAddress(const uint12_t value = 0) : raw{value} {}
^
./stack.h:18:49: error: expected '('
UBankedAddress(const uint12_t value = 0) : raw{value} {}
^
./stack.h:18:55: error: expected ';' after expression
UBankedAddress(const uint12_t value = 0) : raw{value} {}
有人有解决这个问题的想法吗?
$ g++ --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: x86_64-apple-darwin20.3.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
我找到了解决这个问题的方法。它涉及到g++
MacOS 上的编译器。clang++
应该使用。
之前(不工作):
g++ stack.cpp -o stack
之后(工作):
clang++ -std=c++11 -stdlib=libc++ stack.cpp -o stack
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)