【问题标题】:undefined reference to some of my functions [duplicate]对我的一些函数的未定义引用[重复]
【发布时间】:2018-11-29 07:19:40
【问题描述】:

请原谅我在描述我的问题时有任何不足之处,但这是我在这里的第一天。所以我的程序不会编译。它不断踢出“对'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;
    }
  }

}

【问题讨论】:

  • 学会正确缩进代码
  • 抱歉,这是我大一的第一学期
  • 学会正确缩进代码需要 5 分钟。只需查看教科书和课程材料中的示例并遵循它们的风格即可。或者找一个可以自动完成的编辑器。
  • 正确的缩进对于初学者来说更为重要。

标签: c random boolean


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-05-12
    • 2015-12-30
    • 1970-01-01
    • 2011-09-25
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    相关资源
    最近更新 更多