表达式列表被视为复合表达式
Posted
技术标签:
【中文标题】表达式列表被视为复合表达式【英文标题】:Expression list treated as compound expression 【发布时间】:2015-04-10 19:49:47 【问题描述】:我正在尝试编译从网上获得的程序。尝试在代码块中使用,但显示错误。我不明白出了什么问题。我在各种论坛上查找过,但没有太多亮点。有人能尽快帮忙吗?提前致谢
#include <functional>
#include <iostream>
int print_num(int i, int j) return i + j;
int main()
std::function<int(int, int)> foo = print_num;
std::function<int(int, int)> bar;
try
std::cout << foo(10, 20) << '\n';
std::cout << bar(10, 20) << '\n';
catch (std::bad_function_call& e)
std::cout << "ERROR: Bad function call\n";
return 0;
这些是除了 14 个其他错误声明未完成之外的一些错误。我想清除这些错误可以解决这个问题。
main.cpp|10|错误:'function'不是'std'的成员 main.cpp|10|错误:表达式列表被视为函数转换中的复合表达式 [-fpermissive] main.cpp|10|error: 在 'int' 之前的预期主表达式
【问题讨论】:
你是用 C++11 编译的吗? 始终包含顶部的错误。早期错误经常描述后来错误发生的原因。包括您的编译器是什么,以及您使用的编译器标志。 【参考方案1】:您需要使用-std=c++11
编译才能添加C++11 功能。
$ g++ -std=c++11 test.cxx && ./a.out
30
ERROR: Bad function call
对比:
$ g++ test.cxx && ./a.out
test.cxx: In function ‘int main()’:
test.cxx:10:3: error: ‘function’ is not a member of ‘std’
test.cxx:10:28: error: expression list treated as compound expression in functional cast [-fpermissive]
test.cxx:10:17: error: expected primary-expression before ‘int’
...
【讨论】:
以上是关于表达式列表被视为复合表达式的主要内容,如果未能解决你的问题,请参考以下文章
递归调用中的错误“[Error] 表达式列表被视为初始化程序 [-fpermissive] 中的复合表达式”
在创建指向 Mat 向量的指针时,表达式列表在初始化程序中被视为复合表达式