【发布时间】:2019-10-27 16:06:47
【问题描述】:
当从函数返回指针令牌时,我收到了警告。以下代码不完整,请缩短以免混淆。
char *ServerResponds()
{
char copy_wifi_data[EUSART_BUFFER_SIZE];
uint16_t i = 0; int tok_count = 0;
static char *token;
token = strtok(copy_wifi_data, ":"); //Converting wifi data to tokens.
while(token != NULL)
{
if(tok_count == 1)
{
return token;
}
token = strtok(NULL,":");
tok_count++;
}
}
【问题讨论】:
-
如果条件永远不成立怎么办?函数返回什么?
-
@tkausl 该函数返回一个指向字符串的指针。因为没有必要,所以我没有写 else 语句。
-
如果这里有省略的代码,你应该用
...指出。此代码在其他方面不可信 - 例如,copy_wifi_data未初始化,i未使用。此外,声明tokenstatic的目的是什么?有一点代码味道。 -
@PraveenKumarPS:你错过了重点——tkausl 指的是
while的条件。如果第一个strtok()返回NULL,则不会进入while 循环,函数以无显式返回结束。您可能希望它在实践中永远不会发生,但编译器无法知道这一点,坦率地说您也不知道。
标签: embedded microcontroller microchip xc8