728x90 전체 글265 [C언어][Error] 024. function returning function is not allowed – 함수가 함수를 반환하려 함 이 오류는 C언어에서 함수가 다른 함수를 직접 반환하려고 할 때 발생합니다. 하지만 C언어 문법상 함수가 또 다른 함수를 반환하는 것은 허용되지 않습니다. 함수는 값을 반환하거나, 함수 포인터를 통해 다른 함수에 대한 접근만 가능해야 합니다. 개념적으로는 함수가 함수처럼 보이는 무언가를 반환하고 싶을 때가 있지만, 이러한 경우에는 반드시 함수 포인터를 사용해야 합니다. ● 오류 예제// 잘못된 선언 예시int foo() { return bar(); // bar가 함수이고, foo도 bar를 반환하고자 함 (잘못된 의도)}// 오류 선언 예시int bar()() { // 문법적으로 허용되지 않음 return 0;}위와 같은 구조는 컴파일러가 인식할 수 없는 함수 타입이며, 다음과 같은 오류를.. 2025. 4. 24. [C언어][Error] 023. called object is not a function or function pointer – 함수나 함수 포인터가 아닌 것을 호출 이 오류는 괄호()를 이용해 함수를 호출하려 했지만, 해당 식별자가 실제 함수나 함수 포인터가 아닌 경우 발생합니다. 즉, 함수가 아닌 변수나 자료형에 괄호를 붙여 호출하려 하면 컴파일러는 이를 호출할 수 없다고 판단합니다. 자주 발생하는 상황은 함수 이름을 실수로 변수명으로 사용하거나, 함수 포인터가 아닌 일반 변수를 함수처럼 사용하려 했을 때입니다. ● 오류 예제#include int main() { int x = 10; x(); // 오류: x는 함수가 아님 return 0;}컴파일 시 다음과 같은 오류가 출력됩니다.error: called object is not a function or function pointer ● 해결 방법함수 호출 시 사용된 식별자가 실제 함수 또는 함.. 2025. 4. 24. [C언어][Error] 022. invalid suffix on literal; C requires ‘int’ – 숫자 리터럴에 잘못된 접미사 사용 이 오류는 숫자 리터럴에 C언어에서 허용되지 않는 접미사(suffix)를 붙였을 때 발생합니다. C언어는 정수 리터럴과 실수 리터럴에 사용할 수 있는 접미사를 엄격하게 제한하며, 잘못된 문자가 붙으면 문법 오류로 처리됩니다. 예를 들어, 100z 와 같은 표현은 z가 유효한 접미사가 아니기 때문에 이 오류가 발생합니다. 정수 리터럴에는 u, l, ul 등의 조합만 사용할 수 있으며, 대문자와 소문자도 구분됩니다. ● 오류 예제#include int main() { int x = 100z; // 오류: 잘못된 접미사 z printf("%d\n", x); return 0;}컴파일러는 다음과 같은 오류 메시지를 출력합니다.error: invalid suffix "z" on integer co.. 2025. 4. 24. [C언어][Error] 021. a label can only be part of a statement and a declaration is not a statement – 선언문에서 레이블 사용 불가 이 오류는 C언어에서 레이블(label)을 잘못된 위치, 특히 선언문 앞에 사용했을 때 발생합니다. C언어에서 레이블은 반드시 실행 가능한 문(statement)에만 붙일 수 있으며, 변수 선언과 같은 선언문(declaration)에는 사용할 수 없습니다. 레이블은 보통 goto 문과 함께 사용되며, 프로그램의 흐름을 특정 위치로 점프하게 할 때 사용됩니다. 이때 레이블이 선언문에 붙어 있으면 컴파일러가 실행 흐름을 명확히 해석할 수 없기 때문에 오류를 발생시킵니다. ● 오류 예제#include int main() { goto label; label: int x = 10; // 오류: 선언문 앞에 레이블 사용 printf("%d\n", x); return 0;}컴파일 시 다음과 같.. 2025. 4. 24. [C언어][Error] 020. initializer element is not constant – 초기화 값이 컴파일 타임 상수가 아님 이 오류는 전역 변수 또는 정적(static) 변수의 초기화 값이 컴파일 시간에 결정될 수 없는 경우 발생합니다. C언어에서는 이러한 변수들을 초기화할 때 반드시 **컴파일 타임 상수(constant expression)** 를 사용해야 하며, 실행 중 계산되는 값은 사용할 수 없습니다.예를 들어, 지역 변수의 값이나 함수의 반환값, 포인터 역참조 값 등을 전역 변수의 초기값으로 설정하면 이 오류가 발생합니다.● 오류 예제int getValue() { return 42;}int x = getValue(); // 오류: 함수 반환값은 상수가 아님또는 아래와 같이 지역 변수로부터 값을 받아 초기화할 수도 없습니다.int size = 5;int arr[size] = {1, 2, 3, 4, 5}; //.. 2025. 4. 24. [C언어][Error] 019. variable-sized object may not be initialized – 가변 크기 배열을 초기화하려고 함 이 오류는 크기가 고정되지 않은 배열(가변 크기 배열)을 선언과 동시에 초기화하려고 할 때 발생합니다. C언어에서는 배열을 초기화할 때 반드시 컴파일 시간에 크기가 결정된 상수 크기를 사용해야 하며, 실행 중 계산된 값은 허용되지 않습니다.즉, 함수 인자나 지역 변수 등으로 받은 값으로 배열을 선언하면서 동시에 초기화하려고 하면 이 오류가 발생합니다.● 오류 예제#include int main() { int size = 3; int arr[size] = {1, 2, 3}; // 오류 발생: 가변 크기 배열 초기화 불가 return 0;}컴파일러는 실행 중 결정되는 size 값으로는 초기화가 불가능하다고 판단하여 다음과 같은 오류를 출력합니다.error: variable-sized obj.. 2025. 4. 24. 이전 1 ··· 27 28 29 30 31 32 33 ··· 45 다음 728x90