0

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

4

2 回答 2

3

尝试将您的constexpr函数定义移到main().

于 2013-06-15T21:26:18.033 回答
2

你的问题

在预处理器指令 ( ) 之后放置一个分号#include。你不应该那样做,除非#define-ing 某事。这使编译器发疯。此外,除此之外,您不能在函数中定义函数。您必须在外部、全局或类范围内定义它。

解决方案

去掉后面的分号#include <iostream>移动上面 的 constexpr 定义main()

于 2013-06-15T21:27:06.943 回答