C 有些功能有问题
因此,我试图在getOption函数中的if语句中调用OptionA函数,但在第59行出现了一个错误,上面写着“error expected identifier or'('before'{'),所以我想知道如何让我的代码在OptionA函数中打印出我的行。谢谢C 有些功能有问题,c,C,因此,我试图在getOption函数中的if语句中调用OptionA函数,但在第59行出现了一个错误,上面写着“error expected identifier or'('before'{'),所以我想知道如何让我的代码在OptionA函数中打印出我的行。谢谢 #include <stdio.h> #include <stdlib.h> //function declaration char getOption (void); double OptionA; int
#include <stdio.h>
#include <stdlib.h>
//function declaration
char getOption (void);
double OptionA;
int main(void)
{
//local declaration
getOption();
return 0;
}//main
char getOption (void)
{
//local declaration
char option;
//statements
printf("\nMain Menu\n");
printf(" A. Find the square root of a positive number.\n");
printf(" B. Find the inverse of a positive number.\n");
printf(" Q. Quit.\n\n");
printf("Enter choice:");
scanf(" %c", &option);
if ( option == 'a' || option == 'A')
{
OptionA;
}
else if ( option == 'b' || option == 'B')
{
printf("\nnice");
}
else if ( option == 'q' || option == 'Q')
{
exit(0);
}
else
{
printf("\nError. Invalid Selection.\n");
getOption();
}
return option;
}
double OptionA;
{
printf("\nHey, it works.");
}
#包括
#包括
//函数声明
char getOption(void);
双选A;
内部主(空)
{
//地方申报
getOption();
返回0;
}//主要
char getOption(void)
{
//地方申报
字符选项;
//声明
printf(“\n主菜单\n”);
printf(“A.求正数的平方根。\n”);
printf(“B.求正数的倒数。\n”);
printf(“Q.退出。\n\n”);
printf(“输入选项:”);
scanf(“%c”和选项(&O);
如果(选项=='a'| |选项=='a')
{
OptionA;
}
else if(选项==“b”| |选项==“b”)
{
printf(“\nnice”);
}
else if(选项=='q'| |选项=='q')
{
出口(0);
}
其他的
{
printf(“\n错误。选择无效。\n”);
getOption();
}
返回选项;
}
双选A;
{
printf(“\nHey,它可以工作。”);
}
选项a不是一个函数,它是一个双精度函数
double OptionA;
要在c中声明函数,应该使用()
替换:
// PROTOTYPE
double OptionA;
// this is a double, you'd say :
double OptionA();
// this is a function which returns a double;
然后在getOption()函数中:
if ( option == 'a' || option == 'A')
{
OptionA();
}
double OptionA()
{
printf("\nHey, it works.");
}
在函数中:
if ( option == 'a' || option == 'A')
{
OptionA();
}
double OptionA()
{
printf("\nHey, it works.");
}
希望能有帮助
…调用我的OptionA函数
OptionA
不是您声明、调用和定义的函数。任何函数的正确语法为:
return_value FunctionName (argument_data_type argument1, etc...)
如果不想将任何参数传递给函数,则可以在函数名后面有一对空括号,或者在函数名后面的括号内有关键字void
。但是,括号是必需的,否则函数名会被v混淆声明时可由编译器进行变量(double variable
是double类型的变量,double function
也是如此)
剖析错误时:
错误应为标识符或“{”之前的“(”
它告诉您,函数名和函数体的左大括号后面需要一对括号
若要修复此错误,应在代码中调用、声明或定义函数的所有点的函数名后面添加一对括号。将程序顶部的函数声明更改为:
double OptionA;
致:
或:
同时将函数调用更改为:
if ( option == 'a' || option == 'A')
{
OptionA (); // pair of parenthesis added here too
}
并在将函数标题定义为以下内容时将其更改为:
double OptionA() // pair of parenthesis added he right before the function name
{
printf("\nHey, it works.");
}
任何地方都没有
选项a
函数。你为什么认为它是一个函数?如果你只是在学习C,一定要非常注意格式,尤其是缩进。这对可读性非常重要。C是一种对你的错误漠不关心的语言,它会严厉惩罚你,从而保持事情的有序和组织ed很关键。每个字符都很重要。如果代码缩进正确,这里的错误会变得很明显,看起来很错误。实际上,double OptionA();
和double OptionA(void)之间有很大(很大,很大)区别;
在C中。两者都声明一个名为OptionA
的函数,并且都声明该函数返回一个double
。但是,空括号()
版本没有更多说明;该函数可以具有任何类型的任何(固定)数量的参数。相比之下,填充括号(void)
version为函数声明了一个原型,并指定它不接受任何参数。声明后,第一个允许使用double x=operator(1.23,“AAA”)
而第二个则没有。@JonathanLeffler是的,但是这些参数不能在函数定义中使用,因为它们没有变量名或特定的数据类型来调用函数。因此,它们是未使用的参数。对于OP,这两个方法都给出了相同的最终结果(我尝试并测试了它们).我不同意你的评估。更新后的答案仍然说“(无效)与()相同,用于此目的”因此它仍然不准确。它们不一样!一个是原型声明,另一个只是函数声明。一个提供错误检查,而另一个不提供,也不能提供。@JonathanLeffler现在更好了吗?