0

これの何が問題なのですか?コンパイラは次のように述べています: 宣言構文エラー。

ソースファイル:

#include<iostream>
using namespace std;
int main(int argc, char **argv) {
    void printBinary(const unsigned char val) {
        //printBinary() func. outputs byte in binary
        for(int i=7;i>=0;i--)
            if(val & (1<<i))  //generates a single bit with offset position
                std::cout<<"1";
            else
                std::cout<<"0"
    }
    return 0;
}///:~

ヘッダー ファイル:

void printBinary(const unsigned char val);
///:~
4

2 に答える 2

2

ある関数を別の関数の中に定義しようとしています。これは違法です。なぜの定義をprintBinaryの本文に入れたのmainですか?

C ++ 11のラムダ関数を除いて、C++にはローカル関数などの機能はありません。すべての関数は名前空間スコープで「ライブ」です。

このルールの唯一の回避策は、ローカルクラスのインラインメンバー関数定義ですが、ローカル関数も生成されません。

于 2012-11-21T16:54:13.537 に答える
1

別の関数(この場合はmain)本体で関数を定義することはできません。

//編集:もちろん、ラムダでない限り。

于 2012-11-21T16:54:25.843 に答える