두 파일 (average.h, average.c)이 있습니다. 구조의 정의에서 나는 #ifdef INTERNAL
을 사용했습니다. average.c의헤더 파일의 struct 멤버에 #define 매크로를 사용할 때 C 코드를 컴파일 할 수 없습니다.
#ifndef AVERAGE_H_
#define AVERAGE_H_
typedef struct str_internal {
int i1;
int i2;
} internal;
typedef struct str_speed {
int lowest;
int highest;
#ifdef INTERNAL
internal i;
#endif
} speed;
extern double average(speed twoStroke);
#endif /* AVERAGE_H_ */
내용입니다
#include <stdio.h>
#include "average.h"
double average(speed twoStroke) {
double average = (twoStroke.highest + twoStroke.lowest)/2.0;
#ifdef INTERNAL
average += twoStroke.internal.i1+twoStroke.internal.i2;
#endif
return average;
}
int main() {
speed twoStrokeEngine;
twoStrokeEngine.highest = 70;
twoStrokeEngine.lowest = 50;
#ifdef INTERNAL
twoStrokeEngine.internal.i1=20;
twoStrokeEngine.internal.i2=10;
#endif
double avg = average(twoStrokeEngine);
printf("Average speed of two stroke engine is: %f", avg);
return 0;
}
내가이 코드를 컴파일하려고, 는 GCC -DINTERNAL -o average.exe average.c 난 다음 무엇입니까 오류 메시지.
average.c:8:22: error: ‘speed {aka struct str_speed}’ has no member named ‘internal’
average += twoStroke.internal.i1+twoStroke.internal.i2;
^
average.c:8:44: error: ‘speed {aka struct str_speed}’ has no member named ‘internal’
average += twoStroke.internal.i1+twoStroke.internal.i2;
^
average.c: In function ‘main’:
average.c:20:17: error: ‘speed {aka struct str_speed}’ has no member named ‘internal’
twoStrokeEngine.internal.i1=20;
^
average.c:21:17: error: ‘speed {aka struct str_speed}’ has no member named ‘internal’
twoStrokeEngine.internal.i2=10;
@ :이 해당을 넣어 보자 밧세바 (Bathsheba)는 그렇지만, 당신 같은 멘토와 함께 100K 클럽에 가입 할 수있는 특권은 더 존경 할 만합니다. :) –
그래,하지만 너는 레 플러를 잡아야 해 ..... –