未定义对我某些功能的引用

时间:2018-11-29 07:19:40

标签: c random boolean

原谅我在描述问题时的任何不足之处,但这是我在这里的第一天。所以我的程序不会编译。它会继续踢出“对'isOdd'和'IsEven'的未定义引用,而且ld返回1退出状态。似乎无法找出导致错误的原因。它是一个随机数生成器,试图使用bool判断一组随机数整数都是偶数,或者其中之一是奇数。

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>

bool isOdd (int num1, int num2);
bool isEven (int num1, int num2);
void valueForOdd (int num1, int num2);
void valueForBothEven (int num1, int num2);

int i;
int num1;
int num2;

int main(void)
{
  srand(time(NULL));
  for (i=1; i <= 10; ++i) {
    num1 = rand() % 10 + 1;
    num2 = rand() % 10 + 1;
    printf("The two random numbers are %u and %u\n", num1, num2);
  }

  bool valueForOdd = isOdd (num1, num2);

  if (valueForOdd) {
        printf("one of these numbers, %u and %u, isOdd.\n\n", num1, num2);
  }
  else {
        printf("\n");
  }

  bool isOdd (int num1, int num2)
  {
    if ((num1 % 2 != 0) || (num2 % 2 != 0)) {
        return true;
    }
    else {
        return false;
    }
  }

  bool valueForBothEven = isEven (num1, num2);

  if (valueForBothEven) {
        printf("Both of these numbers, %u and %u, are even.\n\n", num1, num2);
  }
  else {
        printf("\n");
  }

  bool isEven (int num1, int num2)
  {
    if ((num1 % 2 == 0) && (num2 % 2 == 0)) {
        return true;
    }
    else {
        return false;
    }
  }

}

1 个答案:

答案 0 :(得分:1)

修复缩进后,可以看到您定义了嵌套在main函数中的那些函数。

C标准不允许这样做。 某些编译器的某些扩展名才允许这样做。

您必须在文件范围内定义所有功能,而不是在另一个功能内。