【问题标题】:Implicit declaration of printfprintf 的隐式声明
【发布时间】:2019-03-06 16:58:16
【问题描述】:

我收到隐式声明错误。请帮忙。我不知道如何用文字来解释它,如果您能帮助我解决错误,我将不胜感激。这是我在学校的作业,我想解决这个问题。请帮忙。

#include<stdio.h>
int printmenu(int *size_of_char);
int get_char(int **size_of_char);

int main() { 

int choice = 0, size_of_char;

while (choice == 0) {
  printf("Enter the size of the array: "); 
  scanf("%d", &size_of_char);
  if (size_of_char <= 0) {
    printf("Invalid input\n");
  }
  else {choice = printmenu(&size_of_char);
  }
}
return 0;

}

int printmenu(int *size_of_char) {
int x;
printf("Menu\n\n");
printf("0. Input characters\n");
printf("1. Shift Elements to Right\n");
printf("2. Combinations of 2 digits\n");
printf("3. Exit\n");
printf("Enter choice: "); 
scanf("%d", &x);

if (x == 0) { 
      get_char(&size_of_char);
    }
  }

int get_char(int **size_of_char) {
    char string[**size_of_char];
      for(int i = 0; i < **size_of_char; i++){
      printf("Enter value: %c ", i+1);
      scanf("%c", &string[i]);
      for(int i = 0; i < **size_of_char; i++){
printf("Your grade in subject %d is %c.\n", i+1, size_of_char[i]);
//printf("Your grade in subject %d is %f.\n", i+1, *(grades + i));


}
}
}

谢谢

【问题讨论】:

  • 当您提出涉及编译器错误的问题时,总是将错误消息的文本放入问题中(逐字 i>)。
  • 除了您收到的编译器和错误消息外,请提供MCVE。在使用 c++11 的 gcc-7.1.0 上,没有隐式声明错误(顺便说一句,这通常是由于您忘记了 include 某些标头,但您已经有 stdio.h 声明了 printf )。但是,还有一些其他错误。
  • 我不明白为什么这被标记为“C++”。它看起来更像“C”。

标签: c++ printf declaration implicit


【解决方案1】:

您已在显示的示例中正确包含声明 printf 的标头。


还有其他错误:

char string[**size_of_char];

这是格式错误的。数组的大小必须是编译时间常数。那个表达不是。

int printmenu(int *size_of_char)

printmenu 被声明为返回int,但是没有返回语句。程序的行为未定义。

// int **size_of_char
printf("Your grade in subject %d is %c.\n", i+1, size_of_char[i]);

您正在尝试使用错误的格式说明符打印int*。程序的行为未定义。

【讨论】:

    猜你喜欢
    • 2012-12-13
    • 2013-12-28
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 2021-01-20
    相关资源
    最近更新 更多