본문 바로가기

전체 글140

[C언어][Error] 073. incomplete type is not allowed – 불완전 타입 사용 불가 이 오류는 선언된 타입이 완전하게 정의되지 않은 상태에서 해당 타입의 객체를 생성하거나 참조하려고 할 때 발생합니다. C언어에서 '불완전 타입(incomplete type)'이란 메모리 크기를 컴파일 타임에 알 수 없는 타입을 의미하며, 이 상태에서는 변수 선언이나 구조체 멤버 접근 등이 허용되지 않습니다.주로 구조체를 미리 선언만 하고 정의를 하지 않았을 때, 또는 포인터가 아닌 일반 변수로 불완전 타입을 사용할 경우 발생합니다.● 오류 예제struct Node; // 전방 선언만 존재int main() { struct Node n; // 오류: 불완전 타입으로 객체 생성 return 0;}컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: incomplete type is no.. 2025. 4. 29.
[C언어][Error] 072. conflicting types for typedef – typedef 재정의 오류 이 오류는 typedef를 통해 정의한 사용자 타입이 동일한 이름으로 서로 다른 타입과 중복 정의되었을 때 발생합니다. C언어에서는 한 번 정의한 typedef 이름에 대해 다시 다른 타입으로 정의하는 것을 허용하지 않으며, 컴파일러는 이를 타입 충돌로 간주하여 오류를 발생시킵니다.이 오류는 보통 헤더 파일에서 중복 포함 방지 매크로가 없거나, typedef 이름을 재사용하려 할 때 발생합니다.● 오류 예제typedef int number;typedef float number; // 오류: 같은 이름으로 다른 타입 정의컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: conflicting types for ‘number’● 해결 방법이미 정의된 typedef 이름을 다시 사용할 수 없기 때문.. 2025. 4. 29.
[C언어][Error] 071. division by zero in constant expression – 0으로 나누는 상수 표현식 이 오류는 상수 표현식에서 0으로 나누는 연산이 발생했을 때 발생합니다. C언어에서 상수 표현식은 컴파일 타임에 계산되며, 이때 0으로 나누는 시도가 있을 경우 컴파일러는 오류를 출력합니다. 이는 정의되지 않은 동작(undefined behavior)이기 때문에 엄격히 금지됩니다.이 오류는 보통 #define 매크로나 enum 정의, 전역 상수 초기화 등에서 발생하며, 코드 실행 이전에 계산되는 값에서 문제가 됩니다.● 오류 예제#define DIVISOR 0#define RESULT (10 / DIVISOR) // 오류: 0으로 나눔int main() { int x = RESULT; return 0;}컴파일 시 다음과 같은 오류 메시지가 출력됩니다.error: division by zero.. 2025. 4. 29.
[C언어][Error] 070. invalid cast from type ‘void *’ to type ‘int’ – void 포인터를 int로 잘못 캐스팅 이 오류는 void* 타입의 포인터를 int형 변수에 직접 대입하려 할 때 발생합니다. C언어에서는 void*는 어떤 타입으로든 변환 가능한 일반 포인터이지만, 포인터를 정수형으로 변환할 때는 명시적인 캐스팅이 필요하며, 시스템에 따라 정의되지 않은 동작이 발생할 수 있습니다.또한, void*를 정수로 변환하는 것은 권장되지 않으며, 주로 포인터 주소 값을 정수로 처리해야 하는 매우 제한적인 상황에서만 사용됩니다.● 오류 예제#include int main() { void* ptr = NULL; int val = ptr; // 오류: void*를 int로 직접 대입 return 0;}컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: invalid cast from type ‘.. 2025. 4. 29.
[C언어][Error] 069. assignment of read-only variable – 상수 변수에 값을 대입함 이 오류는 const로 선언된 읽기 전용 변수에 값을 다시 대입하려고 할 때 발생합니다. C언어에서 const 키워드는 변수의 값을 변경할 수 없도록 선언하며, 컴파일 타임에 이 속성이 적용되어 해당 변수에 쓰기 작업을 할 경우 컴파일 오류가 발생합니다.이 오류는 실수로 값을 바꾸려 하거나, 함수 내부에서 const 매개변수를 변경하려 할 때 자주 발생합니다.● 오류 예제#include int main() { const int x = 10; x = 20; // 오류: const 변수에 대입 불가 return 0;}컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: assignment of read-only variable ‘x’● 해결 방법값을 변경해야 하는 경우에는 const.. 2025. 4. 29.
[C언어][Error] 068. statement with no effect – 효과 없는 문장 존재 이 오류는 코드에서 어떤 문장이 실행되지만 실제로 프로그램의 동작에 영향을 주지 않는 경우 발생합니다. 예를 들어 단순한 변수 참조나 산술 연산 결과를 아무데도 사용하지 않고 끝낼 경우, 컴파일러는 해당 문장이 무의미하다고 판단하여 경고 또는 오류를 출력할 수 있습니다.이런 문장은 종종 실수로 작성된 것이거나, 디버깅 중에 제거되지 않은 코드일 수 있습니다.● 오류 예제#include int main() { int x = 5; x + 1; // 오류: 연산은 했지만 결과를 사용하지 않음 return 0;}컴파일 시 다음과 같은 경고 또는 오류 메시지가 출력됩니다.warning: statement with no effect● 해결 방법해당 문장을 실제 동작에 의미 있도록 수정하거나, 불필.. 2025. 4. 29.