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 中的 lambda 函数,C++ 没有局部函数这样的特性。所有函数都“存在”在命名空间范围内。

此规则的唯一解决方法是本地类的内联成员函数定义,尽管它也不产生本地函数。

于 2012-11-21T16:54:13.537 回答
1

您不能在另一个函数(在本例中为main)的主体中定义一个函数。

//编辑:当然,除非它是 lambda。

于 2012-11-21T16:54:25.843 回答