gcc를 사용하여 c 프로그램을 컴파일할 때 충돌하는 유형 오류
gcc로 다음 프로그램을 컴파일하려고 했습니다.
0 #include <stdio.h>
1
2 main ()
3
4 {
5 char my_string[] = "hello there";
6
7 my_print (my_string);
8 my_print2 (my_string);
9}
10
11 void my_print (char *string)
12 {
13 printf ("The string is %s\n", string);
14 }
15
16 void my_print2 (char *string)
17 {
18 char *string2;
19 int size, i;
20
21 size = strlen (string);
22 string2 = (char *) malloc (size + 1);
23
24 for (i = 0; i < size; i++)
25 string2[size - i] = string[i];
26
27 string2[size+1] = '\0';
28 printf ("The string printed backward is %s\n", string2);
29 }
그러나 실패하고 컴파일러는 다음과 같은 오류 로그를 생성합니다.
- greeting.c: 11: 오류: 'my_print'에 대한 유형을 conflic 중입니다.
- greeting.c: 7: 오류: 'my_print'의 이전 암묵적 선언이 여기에 있었습니다.
- greeting.c: 16: 오류: 'my_print2'에 대한 유형을 conflic 중입니다.
- greeting.c:8: erroro: 'my_print2'의 이전 암묵적 선언이 있었습니다.
그리고 메인 기능 이전에 my_print와 my_print2 기능을 옮기면 모든 것이 잘 됩니다.그러면 누가 왜 문제가 발생하는지 설명해 줄 수 있습니까?감사합니다!
함수를 선언하지 않고 호출된 후에만 나타나는 경우 자동으로 다음과 같이 가정됩니다.int
, 그래서 당신의 경우에는, 당신이 그들을
void my_print (char *);
void my_print2 (char *);
메인으로 호출하기 전에 컴파일러는 그들의 원형이 되는 함수들이 있다고 가정합니다.int my_print2 (char *);
그리고.int my_print2 (char *);
그리고 리턴 타입 이외에는 동일한 프로토타입으로 2개의 함수를 가질 수 없으므로 오류가 발생합니다.conflicting types
.
브라이언이 제안한 대로, 본론을 시작하기 전에 이 두 가지 방법을 선언합니다.
당신은 당신의 기능들을(를) main()
(또는 이전에 기능 프로토타입을 선언합니다.)main()
)
컴파일러가 보는 바와 같이my_print (my_string);
인에main()
함수 선언으로서
위로 함수 이동main()
파일에 입력하거나 다음을 입력합니다.
void my_print (char *);
void my_print2 (char *);
위에main()
파일에
좀 더 일반적인 경우에 대한 답변으로, 일부 내장 라이브러리에서 이미 사용되고 있는 함수 이름을 선택하면 이 오류가 나타납니다.예를 들어 선택합니다.
간단한 방법은 파일을 컴파일하는 동안 컴파일러가 이전 선언을 표시하는 것입니다.
언급URL : https://stackoverflow.com/questions/5691650/conflicting-types-error-when-compiling-c-program-using-gcc
'programing' 카테고리의 다른 글
JPA 2.1 / 최대 절전 모드 4를 사용하여 저장 프로시저에 값 목록 전달 (0) | 2023.11.04 |
---|---|
html 웹 페이지의 모든 요소에 대해 글꼴 속성을 지정하는 방법은 무엇입니까? (0) | 2023.11.04 |
데이터베이스는 어떻게 물리적으로 파일 시스템에 데이터를 저장합니까? (0) | 2023.10.30 |
권한 거부: startForeground에 안드로이드가 필요합니다.허가.전경_서비스 (0) | 2023.10.30 |
굵고 이탤릭체가 EPLUS에서 작동하지 않음 (0) | 2023.10.30 |