我刚刚编写了一个示例程序来理解C中函数的工作。我在C中声明了一个函数,并在程序执行期间调用它。但是我的编译器给了我一个警告说未使用的功能。我的代码如下所示:
#include <stdlib.h>
#include <stdio.h>
int test_function(x);
int main(){
int x;
char letter[] ={"HAAA"};
char cmpre[] = {"AHD"};
int value;
for(int i=0; i<4;i++)
{
if(letter[i] == cmpre[i])
{
x=0;
}
}
int test_function(x)
{
if (x==0)
{
printf("the letters are the same");
}
return value;
}
printf("To check if the letters are the same go to the function");
test_function(x);
return 0;
}
该程序似乎执行正常,但我在第四行收到警告,我在程序开始时声明了该函数。警告是:
Multiple markers at this line
- parameter names (without types) in function declaration [enabled by
default]
- Unused declaration of function 'test_function'
我认为我调用我的功能的方式不对。有人可以帮助我吗提前告诉你。
答案 0 :(得分:1)
免责声明:嵌套函数是非标准C,我只知道GNU extension。因此,我在此声称的任何内容在另一个实现中可能都是不真实的。我的建议是你根本不使用它们。
您的嵌套test_function
正在影响全局声明。因此,您在test_function
之上声明的main
永远不会被调用,因为main
内的调用是指嵌套函数。因此,你会收到警告。
答案 1 :(得分:0)
你应该在main
之外声明int test_function例如。
int test_function(int x)
然后在main中调用该函数。
value = test_function(x)
这就是你的代码应该是这样的:
#include <stdlib.h>
#include <stdio.h>
int test_function(x)
{
int value = 0;
if (x==0)
{
printf("the letters are the same");
}
return value;
}
int main(){
int x = 0;
char letter[] ={"HAAA"};
char cmpre[] = {"AHD"};
int value = 0; // unused
for(int i=0; i<4;i++)
{
if(letter[i] == cmpre[i])
{
x=0;
}
}
printf("To check if the letters are the same go to the function");
test_function(x);
return 0;
}
请注意,如果您不需要返回值,则可以使该函数无效。 并初始化您的变量。您可以搜索几小时来查找此类错误