系统为:linux/CentOS 6.4
对于未在作用域中声明的函数,我不断收到错误。在另一个函数中调用函数是不合法的吗?我读了一篇关于函数的文章,认为这是因为我需要在调用函数时声明它们无效,但我收到了新的错误。我不确定我是否需要将它们声明为全球或其他什么。
Client.cpp:32:错误:未在此作用域中声明‘takf’
Client.cpp:33:错误:未在此作用域中声明‘putf’
Client.cpp:在函数‘QUID TAKEF(INT&)’中:
Client.cpp:44:错误:未在此作用域中声明‘Testa
Client.cpp:在函数‘void putf(int&)’中:
客户端.cpp:70:错误:未在此作用域中声明‘test’
我尝试实现的代码类型的示例:
sem_t mutex;
sem_t S;
char buffer[1024];
void error(const char *msg)
{
perror(msg);
exit(0);
}
/*
void signal_callback_handler()
{
close(sockfd);
}
* /
void father(int &sockfd)
{
while(1)
{
srand(time(NULL));
int ms = rand() % 2000 + 5000
send(sockfd, DATA, strlen(DATA), 0);
usleep(1000*ms);
takef(sockfd);
putf(sockfd);
}
}
void takef(int &sockfd)
{
/*
*
* *Other code*
*
*
*/
testa(sockfd);
/* *Other code*
*
*
*/
}
void testa(int &sockfd)
{
/*
*
*
* *Other code*
*
*
*/
}
void putf(&sockfd)
{
/*
*
*
* *Other code*
*
*
*/
test();
test();
sem_post(&mutex);
}
int main(int argc, char *argv[])
{
/*
*
*
* *Other code*
*
*
*/
father(sockfd);
return 0;
}
2条答案
按热度按时间mznpcxlj1#
简单的解决办法。将函数定义移到空父亲()函数的上方。
在代码中
或者,另一种选择,如下面提到的,是编写一个函数原型。这类似于如何在头文件中为函数编写原型,然后在.cpp文件中定义函数。函数原型是没有主体的函数,它让编译器知道函数存在但尚未定义。
下面是一个使用原型开发的示例
bfnvny8b2#
在C++中,您需要在使用函数之前声明它们。在开始定义任何函数之前包括函数的原型。