728x90 C언어171 [C언어][Error] 062. invalid digit ‘8’ in octal constant – 8은 8진수 상수에 사용할 수 없음 이 오류는 C언어에서 8진수 상수를 선언할 때 8이나 9처럼 허용되지 않는 숫자를 포함했을 경우 발생합니다. 8진수는 숫자 0부터 7까지만 사용할 수 있으며, 앞에 0을 붙여 표기합니다(예: 075). 따라서 0으로 시작하면서 8이나 9를 포함한 수는 유효한 8진수가 아니며, 컴파일러는 문법 오류를 발생시킵니다.실수로 10진수를 8진수처럼 입력하거나, 숫자 앞에 0을 붙였을 때 자주 발생하는 오류입니다.● 오류 예제#include int main() { int num = 078; // 오류: 8은 8진수 자릿수에 존재하지 않음 printf("%d\n", num); return 0;}컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: invalid digit ‘8’ in octa.. 2025. 4. 29. [C언어][Error] 061. bit-field width not an integer constant or has invalid type – 비트 필드의 크기가 정수 상수가 아님 이 오류는 구조체 안에 선언된 비트 필드(bit-field)의 크기가 정수 상수가 아니거나, 지원되지 않는 타입으로 선언되었을 때 발생합니다. 비트 필드는 주로 메모리 절약이나 특정 하드웨어 접근 제어를 위해 사용되며, 반드시 int 또는 unsigned int 같은 정수형과 함께 사용되어야 하고, 너비(width)는 컴파일 타임 상수로 지정되어야 합니다.변수나 연산식 등 런타임 값은 비트 필드의 크기로 사용할 수 없습니다.● 오류 예제struct Flags { int a : 2.5; // 오류: 정수가 아닌 실수 사용};또는 아래와 같이 변수로 크기를 지정해도 오류가 발생합니다:int size = 3;struct Flags { int b : size; // 오류: size는 상수가 아님}.. 2025. 4. 29. [C언어][Error] 060. invalid preprocessing directive – 잘못된 전처리 지시문 사용 이 오류는 C언어에서 전처리 지시문(preprocessor directive)을 잘못 작성했을 때 발생합니다. 전처리 지시문은 #include, #define, #ifdef 등과 같이 컴파일 전에 처리되는 명령어인데, 잘못된 키워드, 철자 오류, 문법적 형식 오류 등이 있을 경우 컴파일러는 해당 지시문을 인식하지 못하고 오류를 발생시킵니다.특히 # 뒤에 올바른 키워드가 오지 않거나 공백, 오타가 있을 경우 자주 발생합니다.● 오류 예제#inlcude // 오류: include 오타int main() { printf("Hello\n"); return 0;}컴파일 시 다음과 같은 오류 메시지가 출력됩니다.error: invalid preprocessing directive ‘inlcude’● .. 2025. 4. 29. [C언어][Error] 059. type defaults to ‘int’ in declaration – 타입 미지정 시 int로 추정됨 이 오류는 변수나 함수 선언 시 자료형(type)을 명시하지 않은 경우 발생합니다.구형 C 컴파일러에서는 자료형이 생략된 경우 기본적으로 int형으로 간주하는 관행이 있었지만, 현대 C 표준(C99 이후)에서는 반드시 명시적으로 자료형을 선언해야 하며, 생략은 문법 오류로 처리됩니다. 이는 코드 가독성 저하 및 타입 추정에 따른 버그를 방지하기 위한 조치입니다. ● 오류 예제main() { // 오류: 반환형 생략 return 0;}컴파일 시 다음과 같은 경고 또는 오류가 발생할 수 있습니다.error: expected declaration specifiers or ‘...’ before ‘main’※ 참고: 현대 C 컴파일러에서는 반환형을 생략하는 것을 경고가 아닌 명백한 오류로 처리합니다.● .. 2025. 4. 29. [C언어][Error] 058. conflicting types for built-in function – 내장 함수와 사용자 정의 함수의 이름 충돌 이 오류는 C언어에서 제공하는 표준 라이브러리 함수(예: printf, malloc 등)와 동일한 이름으로 사용자 함수를 정의하려고 할 때 발생합니다. 컴파일러는 해당 이름이 이미 내장된 함수로 정의되어 있기 때문에, 다른 시그니처의 사용자 정의 함수가 충돌한다고 판단하여 오류를 출력합니다.특히 표준 헤더를 포함한 상태에서 내장 함수 이름을 그대로 사용하는 경우 자주 발생합니다.● 오류 예제#include int printf() { // 오류: 내장 함수 printf와 이름 충돌 return 0;}컴파일러는 다음과 같은 오류 메시지를 출력합니다.error: conflicting types for built-in function ‘printf’● 해결 방법표준 라이브러리 함수와 동일한 이름은 피하고.. 2025. 4. 28. [C언어][Error] 057. initializer element is not computable at load time – 초기화 값이 컴파일 타임에 계산 불가 이 오류는 전역 변수나 정적(static) 변수의 초기화에서 초기화 값이 컴파일 타임에 계산되지 못하는 표현식일 경우 발생합니다. C언어에서 전역/정적 변수의 초기화는 반드시 컴파일 시간에 계산 가능한 상수식이어야 하며, 타입 변환 없이 정확히 일치해야 합니다. 예를 들어 함수 호출 결과(sqrt(4))처럼 런타임에 계산되는 값이나, 타입이 일치하지 않는 값을 초기값으로 사용할 경우 오류가 발생합니다. ● 오류 예제#include int a = sqrt(4); // 오류: sqrt는 런타임 함수임컴파일 시 다음과 같은 오류 메시지를 출력합니다.error: initializer element is not computable at load time ● 해결 방법런타임 연산이 필요한 값은 초기화하지 않.. 2025. 4. 28. 이전 1 ··· 5 6 7 8 9 10 11 ··· 29 다음 728x90