Я получил в моем «main.cpp» следующий код:
#include "rational.h"
using namespace std;
typedef struct rational {
long long numerator;
long long denominator;
} rational_t;
И у меня есть заголовочный файл namend «рациональный.h»:
#pragma oncerational add(rational a,rational b)
{
rational c;
c.numerator = a.numerator + b.numerator;
c.denominator = a.denominator + b.denominator;
return c;
}
Я получил ошибку на линии:
rational add(rational a,rational b)
Это дает мне следующий код ошибки:
Fehler C4430 Fehlender Typspezifizierer — интригующий странник. Hinweis: «default-int», странный фон C ++, но не unterstützt.
Перевод:
Ошибка C4430 Указатель отсутствующего типа — int принят. «default-int» не поддерживается C ++.
Я думаю, потому что функция не определяет мою структуру должным образом. Может кто-нибудь, пожалуйста, помогите мне?
Привет,
Nike
Вы не вставили свой полный исходный код в main.cpp и рациональный.h, так что это делает его немного сложнее для правильной отладки. Основываясь только на том, что вы дали:
Ваша структура была названа «рациональной», но вы использовали typedef и определили его как новый тип или другой способ объявления «структурной рациональной», называемой рациональной_т. Ваша функция должна вернуть рациональный_т и принять рациональный_т для обоих параметров.
Вы, вероятно, хотели поместить структуру рациональных в рациональный.h, перед объявлением вашей функции.
Довольно сложно определить, хотите ли вы использовать C ++ или C из этого примера кода, поэтому я написал это на C. Это будет началом для вас.
main.c
#include <stdlib.h>
#include <stdio.h>
#include "rational.h"
int main()
{
rational_t first;
rational_t second;
first.numerator = 5;
first.denominator = 7;
second.numerator = 3;
second.denominator = 9;
rational_t product = add(first, second);
printf("%lld / %lld\n", product.numerator, product.denominator);
return 0;
}
rational.h
#ifndef RATIONAL_H_
#define RATIONAL_H_
typedef struct rational {
long long numerator;
long long denominator;
} rational_t;
rational add(rational a,rational b)
{
rational c;
c.numerator = a.numerator + b.numerator;
c.denominator = a.denominator + b.denominator;
return c;
}
#endif // RATIONAL_H_
Ваш rational.h
заголовок не может видеть определение rational
но пытается использовать это.
Переехать typedef struct rational…
к вершине rational.h
и заменить декларацией в main.cpp
:
#include "rational.h"
using namespace std;
rational rational_t;