728x90 C언어171 [C언어][Error] 098. conflicting types for extern variable – extern 변수와 정의 충돌 이 오류는 extern으로 선언된 전역 변수의 타입이 실제 정의와 일치하지 않을 때 발생합니다. C언어에서 extern은 다른 파일에 정의된 전역 변수를 참조하기 위해 사용되며, 선언과 정의의 타입이 반드시 일치해야 합니다. 만약 크기, 포인터 여부, signed/unsigned 등이 다르면 컴파일러는 타입 충돌로 인식합니다. 이 오류는 보통 헤더 파일과 구현 파일 간 타입 불일치, 혹은 선언 시 실수로 타입을 잘못 명시한 경우에 발생합니다. ● 오류 예제// file1.cint count = 10;// file2.cextern float count; // 오류: 타입 불일치컴파일 시 다음과 같은 오류 메시지가 출력됩니다.error: conflicting types for ‘count’ ● 해결 방법e.. 2025. 5. 10. [C언어][Error] 097. invalid character in input – 입력에 잘못된 문자 포함 이 오류는 C 코드에 유효하지 않은 문자가 포함되어 있을 때 발생합니다. 예를 들어, 복사-붙여넣기를 통해 소스 코드에 보이지 않는 특수문자, 비 ASCII 문자, 또는 문법적으로 허용되지 않는 문자가 삽입되면 컴파일러가 이를 인식하지 못하고 오류를 발생시킵니다.보통 다음과 같은 상황에서 이 오류가 자주 발생합니다: 웹에서 복사한 코드에 유니코드 문자(‘ ’, “ ” 등)가 포함된 경우 인코딩이 맞지 않아 특수문자가 깨지는 경우 타 언어의 문자를 코드에 잘못 삽입한 경우● 오류 예제#include int main() { printf(“Hello”); // 오류: 유효하지 않은 따옴표 문자 사용 return 0;}컴파일 시 다음과 같은 오류 메시지가 출력될 수 있습니다.error: inv.. 2025. 5. 10. [C언어][Error] 096. expected declaration specifiers or ‘...’ before string constant – 문자열 상수 앞에 선언 누락 이 오류는 함수 매개변수나 전처리 지시문 등에서 문자열 상수가 사용되었지만, 그 앞에 필요한 선언 형식이 없을 경우 발생합니다. C언어는 함수 정의에서 문자열 상수를 직접 사용하는 것이 허용되지 않으며, 특히 매개변수 위치에 선언이 누락된 경우 문법 오류로 간주됩니다.이는 보통 함수 선언에서 타입을 명시하지 않고 문자열을 직접 쓴다든지, 매크로 정의에서 구문 오류가 발생했을 때도 나타납니다.● 오류 예제#include // 오류: 매개변수 자리에 문자열 상수void greet("Hello") { printf("문법 오류 발생\n");}컴파일 시 다음과 같은 오류 메시지가 출력됩니다.error: expected declaration specifiers or ‘...’ before string cons.. 2025. 5. 10. [C언어][Error] 095. expected expression before ‘]’ token – ] 앞에 표현식 누락 이 오류는 배열 인덱스를 사용할 때 대괄호 내부에 유효한 표현식이 없을 경우 발생합니다. 즉, [] 안에 인덱스가 빠졌거나, 인덱스가 올바른 형태의 식(expression)이 아닐 때 컴파일러가 오류를 출력합니다. 대괄호는 배열 접근 연산자로, 항상 안에 정수형 표현식이 들어가야 합니다.실수로 인덱스를 빠뜨렸거나, 인덱스를 구성하는 변수나 값이 선언되지 않았을 때 자주 발생합니다.● 오류 예제#include int main() { int arr[5] = {1, 2, 3, 4, 5}; printf("%d\n", arr[]); // 오류: 인덱스 없음 return 0;}컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: expected expression before ‘]’ tok.. 2025. 5. 7. [C언어][Error] 094. invalid type argument of unary ‘*’ – 잘못된 타입에 대해 * 연산 사용 이 오류는 포인터가 아닌 값에 대해 역참조 연산자(*)를 사용했을 때 발생합니다. C언어에서 * 연산자는 포인터가 가리키는 메모리의 값을 참조하는 용도로 사용되며, 반드시 포인터 타입에만 적용되어야 합니다.정수형 변수, 구조체, 함수의 반환값 등 포인터가 아닌 타입에 * 연산자를 사용할 경우, 컴파일러는 해당 타입이 역참조 가능한 메모리 주소가 아니라고 판단하여 오류를 발생시킵니다.● 오류 예제#include int main() { int x = 10; int y = *x; // 오류: x는 포인터가 아님 return 0;}컴파일 시 다음과 같은 오류 메시지가 출력됩니다.error: invalid type argument of unary ‘*’● 해결 방법역참조(*) 연산자는 반드시 포.. 2025. 5. 7. [C언어][Error] 093. incompatible types when assigning to type ‘int *’ from type ‘float *’ – 포인터 타입 불일치 이 오류는 서로 다른 타입의 포인터를 직접 대입하려 할 때 발생합니다. 예를 들어 float* 타입의 포인터를 int* 타입 변수에 대입하는 경우, 컴파일러는 두 포인터 타입 간의 불일치를 감지하여 오류를 발생시킵니다. C언어에서는 타입이 명확히 맞지 않는 포인터 간의 대입은 허용되지 않습니다.포인터는 단순한 메모리 주소를 가리키는 것처럼 보이지만, 내부적으로 가리키는 데이터 타입에 따라 연산 방식과 접근 방식이 달라지므로 타입 안전성을 유지하는 것이 중요합니다.● 오류 예제#include int main() { float f = 3.14; float *fp = &f; int *ip = fp; // 오류: float* → int* 대입 불가 return 0;}컴파일 시 다음과 같은.. 2025. 5. 7. 이전 1 2 3 4 5 ··· 29 다음 728x90