我已经创建了C ++程序来试验C ++ 17的deprecated
关键字。
它在 clang(3.8.0)中运行良好,但是, g ++(5.4.0)会出错。
source_file.cpp:9:11: error: expected identifier before ‘[’ token
namespace [[ deprecated ]] bar
^
source_file.cpp:9:28: error: ‘bar’ does not name a type
namespace [[ deprecated ]] bar
^
source_file.cpp: In function ‘int main()’:
source_file.cpp:16:5: error: ‘bar’ has not been declared
bar::var = 10;
为什么吗
#include <iostream>
using namespace std;
namespace foo
{
int var;
}
namespace [[ deprecated ]] bar
{
int var;
}
int main()
{
bar::var = 10;
return 0;
}
答案 0 :(得分:1)
线索在错误消息中:“[
令牌之前的预期标识符”。
标识符为bar
,必须在 [
之前显示。所以:
namespace bar [[deprecated]]
{ }
使用GCC6.3进行测试