C 有些功能有问题

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

因此,我试图在getOption函数中的if语句中调用OptionA函数,但在第59行出现了一个错误,上面写着“error expected identifier or'('before'{'),所以我想知道如何让我的代码在OptionA函数中打印出我的行。谢谢

#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现在更好了吗?