0

私は主に C を勉強しているので、C++、特に C++11 を学ぼうとしています。「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|エラー: '{' トークンの前に関数定義を使用することはできません | 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 に答える