c语言 变量声明,函数vs变量声明在C中

此代码工作原理:

std::ifstream f(mapFilename.c_str());

std::string s = std::string(std::istreambuf_iterator(f), std::istreambuf_iterator());

ParseGameState(s);

其中mapFilename是一个std :: string和void ParseGameState(const std :: string&);.

这不是:

std::ifstream f(mapFilename.c_str());

std::string s(std::istreambuf_iterator(f), std::istreambuf_iterator());

ParseGameState(s);

这是错误:

game.cpp: In member function ‘int Game::LoadMapFromFile(const std::string&)’:

game.cpp:423: error: no matching function for call to ‘ParseGameState(std::string (&)(std::istreambuf_iterator >, std::istreambuf_iterator > (*)()))’

game.cpp:363: note: candidates are: ParseGameState(const std::string&)

因此,在这种情况下,它似乎将s识别为函数声明,而不是变量声明.

这是为什么?这是GCC 4.2.1(Apple build)中的一个bug吗?或者GCC是否正确处理?这是否在C标准中定义?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值