不允许使用C ++ constexpr函数定义

时间:2013-06-15 21:23:33

标签: constexpr

我正在尝试学习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。

2 个答案:

答案 0 :(得分:3)

尝试将constexpr功能定义移到main()之外。

答案 1 :(得分:1)

您的问题

在预处理程序指令(#include)之后放置分号。你不应该这样做,除非#define - 某事。这使得编译器变得疯狂。此外,除此之外,您无法在函数中定义函数。您必须在全局或类范围内定义它。

<强>解决方案

删除#include <iostream>后面的分号。 移动constexpr定义以上 main()