본문 바로가기

프로그래밍언어/C언어[Error]58

[C언어][Error] 046. non-void function does not return a value – return 문 누락 이 오류는 반환형이 void가 아닌 함수에서 return 문이 존재하지 않거나, 모든 실행 경로에서 값을 반환하지 않을 때 발생합니다. C언어에서는 int, char, float 등 값을 반환하는 함수는 반드시 return 문을 통해 그 값을 반환해야 하며, 그렇지 않으면 컴파일러는 함수가 명시된 반환형을 충족하지 않는다고 판단합니다.특히 조건문 내부에서만 return을 하고 일반 흐름에서는 누락된 경우에도 이 오류가 발생할 수 있습니다.● 오류 예제#include int get_value() { int x = 10; // return 누락}int main() { int val = get_value(); printf("Value: %d\n", val); return 0;}컴파일.. 2025. 4. 28.
[C언어][Error] 045. expected parameter declarator – 함수 선언 매개변수 형식 누락 이 오류는 함수 선언 또는 정의에서 매개변수 선언 형식이 누락되었거나 잘못 작성되었을 때 발생합니다. C언어에서는 함수의 매개변수를 선언할 때 반드시 형(type)과 변수명을 명시해야 하며, 그 중 하나라도 빠질 경우 컴파일러가 문법 오류를 발생시킵니다.특히 함수 선언 시 괄호 안이 비어 있거나, 변수명 또는 타입이 생략된 경우 이 오류가 발생할 수 있습니다.● 오류 예제#include void print_sum(int , ); // 오류: 매개변수 선언이 불완전함int main() { print_sum(3, 5); return 0;}컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: expected parameter declarator● 해결 방법모든 매개변수는 타입과 변수명을 함.. 2025. 4. 28.
[C언어][Error] 044. initializer for aggregate is not constant – 구조체나 배열 초기화 값이 상수가 아님 이 오류는 전역 변수나 정적(static) 변수의 초기화에서 상수가 아닌 값을 사용했을 때 발생합니다.C언어에서는 전역/정적 변수의 초기화 값은 반드시 컴파일 타임에 결정 가능한 상수 표현식이어야 하며, 런타임에 결정되는 변수나 계산식을 사용할 수 없습니다. 특히 전역 범위나 static으로 선언된 배열, 구조체 등을 초기화할 때 변수 값을 사용하면 컴파일러는 오류를 발생시킵니다. ● 오류 예제int x = 10;int arr[3] = {1, x, 3}; // 오류: x는 상수가 아님 (전역 초기화 불가)컴파일러는 다음과 같은 오류 메시지를 출력합니다.error: initializer element is not constant※ 참고: 함수 내부(local scope)에서는 변수로 배열을 초기화해도 오.. 2025. 4. 28.
[C언어][Error] 043. ‘else’ without a previous ‘if’ – if 없이 else 사용 이 오류는 else 문이 앞선 if 문 없이 단독으로 사용되었을 때 발생합니다. C언어에서 else는 반드시 if 문과 함께 사용되어야 하며, 앞에 if 블록이 존재하지 않으면 컴파일러는 문맥을 해석할 수 없어 오류를 발생시킵니다.이는 보통 if 문을 주석 처리했거나, 중괄호 구조가 어긋났을 때 자주 발생합니다.● 오류 예제#include int main() { else { printf("조건이 없는데 else만 존재합니다.\n"); } return 0;}컴파일 시 다음과 같은 오류 메시지가 출력됩니다.error: ‘else’ without a previous ‘if’● 해결 방법else는 반드시 if 문 바로 뒤에 와야 하며, 중간에 다른 문장이 있거나, if가 누락되면 안.. 2025. 4. 27.
[C언어][Error] 042. expected identifier or ‘(’ before ‘{’ token – { 앞에 식별자나 괄호가 필요함 이 오류는 C언어에서 코드 블록을 여는 중괄호({) 앞에 식별자(identifier)나 괄호(())가 필요할 때, 그 형식이 빠져 있을 경우 발생합니다. 함수 정의나 조건문, 반복문 등의 문법 구조에서 중괄호를 시작하기 전에 올바른 구문이 선행되지 않으면 컴파일러는 구문 오류를 발생시킵니다.특히 함수 정의 시 괄호 없이 중괄호를 열거나, if, while 등 조건문에 괄호를 생략한 경우에 자주 발생합니다.● 오류 예제#include // 오류: 괄호 생략int main { printf("Hello\n"); return 0;}위 코드에서 main 함수 선언부에 괄호가 없기 때문에, 컴파일러는 { 앞에 식별자 또는 괄호가 필요하다는 오류를 발생시킵니다.error: expected identifie.. 2025. 4. 27.
[C언어][Error] 041. variably modified ‘variable’ at file scope – 전역에서 가변 크기 배열 사용 이 오류는 전역 변수나 파일 범위(file scope)에서 가변 크기 배열(VLA: Variable Length Array)을 선언하려 할 때 발생합니다. C언어에서는 VLA는 반드시 함수 내부에서만 사용 가능하며, 전역 또는 정적(static) 범위에서는 사용할 수 없습니다.즉, 크기가 컴파일 시간에 결정되지 않는 배열은 함수 외부나 정적 컨텍스트에서는 정의할 수 없습니다. 컴파일러는 배열의 크기를 컴파일 타임에 알아야 하므로 오류를 발생시킵니다.● 오류 예제int size = 5;int arr[size]; // 오류: 전역에서 가변 크기 배열 선언컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: variably modified ‘arr’ at file scope● 해결 방법가변 크기 배열.. 2025. 4. 27.