2016-12-11 3 views
0

제공 :C++ 구조체의 기능은 "누락 된 형식 지정자"나는 다음과 같은 코드 내 "MAIN.CPP"에있어

#include "rational.h" 

using namespace std; 

typedef struct rational { 
    long long numerator; 
    long long denominator; 
} rational_t; 

을 그리고 "rational.h의"헤더 파일의 namend 있습니다 : 대해서는 2 C4430 FEH : 그것은 나에게 다음과 같은 오류 코드를 제공

rational add(rational a,rational b) 

:

#pragma once 


rational add(rational a,rational b) 
{ 
    rational c; 
    c.numerator = a.numerator + b.numerator; 
    c.denominator = a.denominator + b.denominator; 
    return c; 
} 

나는 라인에 오류가 발생했습니다 lender Typspezifizierer - int wird angenommen. Hinweis : "default-int"는 C++에서 시작하지 않습니다. 번역 : 오류 C4430 누락 유형 지정자 - int가 허용됩니다. "default-int"는 C++에서 지원되지 않습니다.

함수가 내 구조체를 제대로 감지하지 못하기 때문에 생각합니다. 누구든지 나를 도울 수 있습니까?

인사말, 나이키

+2

헤더 파일에 이동해야하는 구조체 선언. 또한 올바른 c 또는 C++ 언어를 원한다면 결정하십시오. C++는 그렇지 않지만'struct rational'을 요구합니다. –

답변

0

귀하의 rational.h 헤더는 rational의 정의를 볼 수 있지만 그것을 사용하기 위해 노력하고있다. 당신은 MAIN.CPP 및 rational.h에 대한 전체 소스 코드를 붙여하지 않은

#include "rational.h" 

using namespace std; 

rational rational_t; 
0

, 그래서 이것은 그것을 조금합니다 : rational.h의 상단에

이동 typedef struct rational…main.cpp의 선언으로 대체 제대로 디버깅하기가 어렵습니다. 단지 당신이 제공 한 내용을 바탕으로 :

  1. 귀하의 구조는 "합리적"이라고했지만 당신은 타입 정의를 사용하고 새로운 유형, 또는 "구조체 합리적"이라고 rational_t을 선언하는 또 다른 방법으로 정의했다. 함수는 rational_t를 리턴하고 두 매개 변수 모두에 대해 rational_t를 승인해야합니다.

  2. 아마도 구조체를 rational.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_ 
관련 문제