我正在尝试学习C ++,特别是C ++ 11,因为我们主要学习C,而且在尝试测试“constexpr”可以做什么时我遇到了错误。
测试1:
#include <iostream>;
using namespace std;
int main()
{
int x = 3;
int y = 4;
constexpr int Sum(int a, int b) {return a + b;}
cout << Sum(x,y);
return 0;
}
测试2:
#include <iostream>;
using namespace std;
int main()
{
int x = 3;
int y = 4;
constexpr int Sum() {return 3+4;}
cout << Sum();
return 0;
}
在这两种情况下,它都给了我以下错误:
E:\ C ++ \ Lesson1 \ main.cpp | 9 |错误:在'{'token |之前不允许使用函数定义 E:\ C ++ \ Lesson1 \ main.cpp | 10 |错误:'Sum'未在此范围内声明|
我做错了什么或者我必须对编译器做些什么? (使用代码块,我启用了C ++ 11。
答案 0 :(得分:3)
尝试将constexpr
功能定义移到main()
之外。
答案 1 :(得分:1)
您的问题
在预处理程序指令(#include
)之后放置分号。你不应该这样做,除非#define
- 某事。这使得编译器变得疯狂。此外,除此之外,您无法在函数中定义函数。您必须在全局或类范围内定义它。
<强>解决方案强>
删除#include <iostream>
后面的分号。
移动constexpr定义以上 main()
。