본문 바로가기
728x90

전체 글235

[C언어][Error] 030. case label not within a switch statement or outside switch – switch 없이 case 사용 이 오류는 case 레이블이 switch 문 내부가 아닌 곳에서 사용되었을 때 발생합니다. C언어에서 case는 반드시 switch 문과 함께 사용되어야 하며, 단독으로 사용할 수 없습니다.일반적인 실수로는 switch 문 없이 case만 단독으로 사용하거나, 중괄호 범위 밖에서 잘못 작성하는 경우입니다.● 오류 예제#include int main() { int num = 2; case 1: printf("One\n"); break; // 오류 발생 return 0;}위 코드에서 case는 switch 없이 단독으로 사용되었기 때문에 다음과 같은 오류가 발생합니다.error: case label not within a switch statement● 해결 방법c.. 2025. 4. 27.
[C언어][Error] 029. function ‘main’ must return int – main 함수가 int를 반환하지 않음 이 오류는 C 프로그램의 진입점인 main 함수가 올바른 반환형을 사용하지 않았을 때 발생합니다. C언어에서 main 함수는 운영체제에 종료 상태를 전달하기 위해 반드시 int형을 반환해야 합니다.만약 void main()과 같이 작성하거나, 다른 반환형을 사용하면 일부 컴파일러에서는 오류 또는 경고를 출력하게 됩니다. 이는 표준 C 언어 규격에 위배되는 정의이기 때문입니다.● 오류 예제#include void main() { // 오류: 반환형이 int가 아님 printf("Hello World\n");}컴파일 시 다음과 같은 오류 또는 경고 메시지가 출력될 수 있습니다.error: function ‘main’ must return ‘int’● 해결 방법main 함수는 반드시 int형으로 선언해.. 2025. 4. 27.
[C언어][Error] 028. expected expression before ‘)’ token – 괄호 앞에 식이 없음 이 오류는 괄호 내부에 들어가야 할 표현식(expression)이 누락되었거나, 괄호 앞에 문법적으로 잘못된 요소가 있을 때 발생합니다. 특히 조건문이나 반복문에서 괄호만 쓰고 내부에 조건식을 넣지 않았을 경우, 컴파일러는 괄호 앞 또는 안에 유효한 표현식을 기대하다가 오류를 출력하게 됩니다. 예를 들어 if (), while () 처럼 괄호 안이 비어 있거나, 매크로/함수 호출에서 괄호가 열리고 닫히기만 하고 그 사이에 아무 값도 없을 경우에도 이 오류가 발생할 수 있습니다. ● 오류 예제#include int main() { if () { // 오류: 조건식이 없음 printf("조건문 실행\n"); } return 0;}컴파일 시 다음과 같은 오류 메시지가 출력됩니다... 2025. 4. 24.
[C언어][Error] 027. invalid use of void expression – void 값을 연산에 사용하려 함 이 오류는 반환형이 void인 함수를 연산식 또는 대입문에 사용하려 할 때 발생합니다. void 함수는 값을 반환하지 않으므로, 그 결과는 변수에 저장하거나 다른 값과 연산에 사용할 수 없습니다. 특히 printf와 같은 함수 안에 void 함수를 넣거나, void 함수의 결과를 대입하려 할 때 자주 발생합니다. ● 오류 예제#include void greet() { printf("Hello\n");}int main() { int x = greet(); // 오류: void 함수는 값을 반환하지 않음 return 0;}또는 다음과 같이 void 함수의 결과를 연산에 사용하려고 하면 오류가 발생합니다.int y = greet() + 1; // 오류 발생컴파일러는 다음과 같은 오류 메시지.. 2025. 4. 24.
[C언어][Error] 026. storage size of ‘variable’ isn’t known – 변수의 크기를 알 수 없음 이 오류는 변수 선언 시 컴파일러가 해당 타입의 메모리 크기를 결정할 수 없을 때 발생합니다. 특히 구조체나 typedef로 선언만 해놓고 정의하지 않은 타입을 변수로 선언하면, 컴파일러는 메모리 크기를 계산할 수 없어 오류를 발생시킵니다. 이는 선언만 있는 불완전한 타입(incomplete type)에 변수를 선언하려고 할 때 자주 발생하는 오류입니다. ● 오류 예제// file1.htypedef struct Node Node;// file2.c#include "file1.h"int main() { Node n; // 오류: Node는 정의되지 않음 return 0;}위 코드에서 Node는 typedef로 선언만 되어 있고, 구조체의 실제 정의가 없기 때문에 크기를 계산할 수 없습니다. 컴.. 2025. 4. 24.
[C언어][Error] 025. function returning array is not allowed – 함수가 배열을 반환하려 함 C언어에서 함수는 배열 자체를 직접 반환할 수 없습니다. 배열은 함수 내부에서 선언되면 지역적으로 존재하며, 함수가 종료되면 메모리에서 소멸됩니다. 따라서 배열을 반환하는 시도는 컴파일 오류로 이어집니다. 배열을 반환하려면 배열 자체가 아닌 배열의 포인터를 반환하거나, 전역(static) 배열을 사용하거나, 호출자가 전달한 배열에 값을 채우는 방식 등을 사용해야 합니다. ● 오류 예제// 잘못된 예시int[] getArray() { int arr[3] = {1, 2, 3}; return arr; // 오류 발생}이 경우 컴파일러는 배열을 반환하는 것이 불가능하다고 판단하여 다음과 같은 오류를 출력합니다.error: function cannot return array type ‘int[3]’ .. 2025. 4. 24.
728x90