Неиспользуемые параметры и управление достигают конца ошибок не пустых функций при компиляции - CS50 pset3 - музыка - PullRequest
0 голосов
/ 18 мая 2018

Я попробовал и все погуглил, но я не могу исправить эти загадочные ошибки.В моем файле helpers.c говорится, что я не использовал ни один из параметров, хотя я использовал все из них.

Ниже приведены ошибки, которые я получаю:

helpers.c:8:21: error: unused parameter 'fraction' [-Werror,-Wunused-parameter] int duration(string fraction) ^

helpers.c:11:1: error: control reaches end of non-void function [-Werror,-Wreturn-type] } ^

helpers.c:14:22: error: unused parameter 'note' [-Werror,-Wunused-parameter] int frequency(string note) ^

helpers.c:17:1: error: control reaches end of non-void function [-Werror,-Wreturn-type] } ^

helpers.c:20:21: error: unused parameter 's' [-Werror,-Wunused-parameter] bool is_rest(string s) ^

helpers.c:23:1: error: control reaches end of non-void function [-Werror,-Wreturn-type] } ^

6 errors generated.

Вот мой код:

// Вспомогательные функции для музыки

#include <cs50.h>
#include <stdio.h>
#include <math.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include "helpers.h"

// Converts a fraction formatted as X/Y to eighths
int duration(string fraction)
{
    // convert string input to int
    int x = fraction[0] - '0';
    int y = fraction[2] - '0';
    // convert to integral number of eighths
    if (y == 8)
    {
        return x;
    }
    return (8 / y) * x;
}

// Calculates frequency (in Hz) of a note
int frequency(string note)
{
    // Parse string <note> //not quite sure on data types (chars or int?)
    int baseHz = 440; //A4's Hz
    char letter = note[0];

    if (strlen(note) < 3) //notes with # or b
    {
        int octave = note[1] - '0';
    }
    else //notes without # or b
    {
        int octave = note[2] - '0';
    }
    //find distance from octave 4
    int octave_dist = octive - 4; //power of 2 for octave adjustment
    //multiplier to adjust for octave
    int octave_adjust = pow(2, octave_dist); //not sure on types here??

    //find note distance from A
    float n = 2.0; //number of semitones between notes
    if (letter != 'B') //B will use default n = 2
    {
        n = ('A' - letter) * 2;
    }
    //multiplier to adjust for note
    float note_adjust = pow(2, n/12.0);

    //multiplier to adjust for # or b

    int Hz = round(baseHz * octave_adjust * note_adjust);
    return Hz;
}

// Determines whether a string represents a rest
bool is_rest(string s)
{
    //get_string return "" if user input is only a line ending
    if (strcmp(s, "") == 0)
    {
        return true;
    }
    return false;
}

Я все еще работаю над своими функциями (шаг за шагом) в соответствии с инструкциями курса, но яЯ даже не могу скомпилировать, чтобы увидеть, правильно ли все, что я сделал.

Я не понимаю, почему я не "использовал параметры". Еще одна вещь, на которую я могу указать, это то, что мои ошибки дают мне(казалось бы) неправильные места.Может ли это означать, что что-то не так с IDE / compiler / makefile?

Я убивал себя из-за этого несколько дней.Любая помощь будет принята с благодарностью.Заранее спасибо.

...