我的环境Arch Linux,gcc 7.2
我正在学习C++并且我使用关键字constexpr
来定义一个常量,而在编译时,它会给我一个错误消息
错误:identifier ‘constexpr’ is a keyword in C++11 [-Werror=c++11-compat]
我可以使用默认的g ++编译我的程序,但无法使用-std = c ++ 14和-Werror进行编译
我正在使用的命令是:
g++ -std=c++14 -O2 -Wall -Werror -Wextra -ansi -flto
Run Code Online (Sandbox Code Playgroud)
我认为该-Werror
选项导致了这个问题.但是问题是什么?有人可以告诉我吗?
#include <iostream>
int main() {
constexpr double yen_dollar = 0.107;
std::cout << yen_dollar << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)test.cpp:4:5: error: identifier ‘constexpr’ is a keyword in C++11 [-Werror=c++11-compat] constexpr double yen_dollar = 0.107; ^~~~~~~~~ test.cpp: In function ‘int main()’: test.cpp:4:5: error: ‘constexpr’ was not declared in this …
我有两个函数,比如 foo() 和 bar(),我希望它们互斥,即在 bar() 运行时完全阻止 foo() 的运行或在 foo() 运行时完全阻止 bar() 的运行为线程安全而运行。
但是,我可能会在 foo() 内部调用 bar(),也就是说,当 foo() 在 foo() 内部调用 bar() 时,让 bar() 运行,但其他线程不会调用 bar()。
是否可以?如果是,你能提供大致的想法吗?
尝试在C中使用一个或多个互斥体,很容易使两个函数互斥,但是我不能在foo()中调用bar(),它们会进入死锁。
我不能在 foo() 内部调用 bar() 之前就解锁互斥锁,因为我不能保证下一个 bar() 运行是在 foo() 内部调用的那个。
我正在寻找一种解决方案,即 foo 将阻止 bar,如果它们在不同的线程中运行,bar 将阻止 foo。但是当 foo 在其主体内(同一线程)调用 bar 时,让 bar 运行。
谢谢