此代码无效
任何想法
#include <QCoreApplication>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include "a.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
boost::asio::io_service io;
std::cout << "Wait for five seconds\n";
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
// t.wait();
A *vvv=new A();
std::cout << "Hello, world!\n";
t.async_wait(&print);
std::cout << "Keep cool and wait!\n";
return a.exec();
}
void print(const boost::system::error_code& /*e*/)
{
std::cout << "You are cool!\n";
}
错误:
D:\ qtsrc \ asiotry \ main.cpp:14:错误:C2065:'print':未声明 标识符
答案 0 :(得分:3)
看一下这段代码:
int *address = &i; //using i here!
int i; //declaration
此代码有什么问题?您正在做类似的事情。
在print
之前声明main()
,以便您可以<{1}} 使用:
main()
请注意,在使用之前,您需要声明函数,并不一定意味着声明必须高于//declaration
void print(const boost::system::error_code& /*e*/);
int main()
{
//use print here
}
//definition
void print(const boost::system::error_code& /*e*/)
{
std::cout << "You are cool!\n";
}
。你也可以这样做:
main()
希望能帮助您理解声明和使用的概念。 - )
答案 1 :(得分:0)
这是因为当您在print
调用中使用async_wait
时,它尚未声明,因此它不知道print
是什么。
有两种可能的解决方案:
print
函数的定义移至main
以上。答案 2 :(得分:0)
记住一件事。函数的声明应位于程序中引用(用法)之前。
在main之前添加: -
void print(const boost::system::error_code& /*e*/);
或强>
在main之前定义函数。