본문 바로가기

Software

Error message 모음

※ Bad call of in-line function 
마크로 정의로부터 행단위(in-line) 관계가 올바르게 호출되지 않고 있다. 행단위 관계란 시작과 끝에 두개의 연속한 밑줄이 붙어 있는 함수를 말한다. 이 행단위 함수는 이중 밑줄( _ _ )로 시작하고 끝난다. 

※ Irreducible expression tree 
컴파일러 자신의 에러를 표시한다. 원시화일의 지정되 행에서 코드를 생성할 수 없는 식이 존재하기 때문에 변경을 해야만 한다. 

※ Register allocation failure 
컴파일러 자신의 에러를 표시한다. 원시 화일의 지정된 행에 몇개의 식이 코드생성기로 하여금 코드를 생성할 수 없게 하고 있다. 위배되는 식이 무엇이든 간에 이것은 방지 되어야 한다.  Error 
--------------------------------------------------------------------------------

※ #operator not followed by vacro argument name 
마크로 정의에서 #뒤에는 마크로 인수명인 문자열이 올 필요가 있다. 

※ `XXXXXXXX’ not an argument 
XXXXXXXX 라고 하는 식별명이 함수의 인수로서 선언되어 있지만, 함수 인수리스트에는 그 식별명이 없다. 

※ Ambiguous symbol 'XXXXXXXX' 
XXXXXXXX 라고 하는 구조체의 필드명이 다른 오프셋 또는 형으로 복수의 구조체에 있기 때문에 올바르게 필드를 참조할 수가 없다. 구조체를 올바른 형으로 캐스트(cast) 하든가 필드명을 정정해 주어야 한다. 

※ Argument # missing name 
함수 프로토타이프에 대해서 인수명이 생략되어 있다. 함수가 프로토타이프로 정의된 경우, 그 프로토타이프는 인수명을 포함시켜야 한다. 

※ Argument list syntax error 
함수호출 인수는 공백으로 분리되어야 하고 우측 괄호로 닫아야 한다. 소스화일이 뒤에 컴나나 우측 괄로가 아닌 다른 문자가 오는 인수를 포함하고 있다. 

※ Array bounds missing ] 
배열의 범위가 우괄호( ] )로 닫혀져 있지 않다. 

※ Array size too large 
선언된 배열이 너무 커서 프로세서의 사용가능한 메모리에 적합하지 않다. 

※ Assembler statement too long 
행단위 어셈블리 문이 480바이트를 초과하고 있다. 

※ Bad configuration file 
TRUBOC.CFG 화일중에 올바르지 않은 명령옵션이 있다. configuration 화일 명령 옵션은 반드시 대쉬 ( - ) 로 시작해야 한다. 

※ Bad ifdef directive syntax 
#ifdef는 1개의 식별명 밖에 포함하지 않는다. 

※ Bad ifndef directive syntax 
#ifndef는 1개의 식별명 밖에 포함하지 않는다. 

※ Bad undef directive syntax 
#undef는 1개의 식별명 밖에 포함하지 않는다. 

※ Bit field size syntax 
비트 필드의 폭은 1부터 16까지의 상주식으로 정의되어야 한다. 

※ Call of non-function 
선언되지 않은 함수를 호출하고 있다. 이것은 함수를 잘못 선언하거나 함수명을 틀리게 사용하여 야기된다. 

※ Cannot modify a const object 
const로 선언된 대상에 대해서 대입등과 같은 잘못된 조작을 하고 있다. 

※ Case outside of switch 
컴파일러가 switch문의 밖에서 case 문을 만났다. 이것도 괄호 ( {, } )가 잘못 대응됨으로써 야기된다. 

※ Cast syntax error 
cast 에 올바르지 않은 기호가 있다. 

※ Character constant too long 
문자상수가 너무 길다. 문자상수는 1문자나 2문자의 길이만 허용된다. 

※ Compound statement missing } 
우괄호 ( } ) 가 없다. 컴파일러가 소스화일 끝에 이르렀는데 닫는 괄로를 만나지 못했다. 이것은 괄호 ( {, } )가 잘못 대응됨으로써 야기된다. 

※ Conflicting type modifiers 
1개의 포인터에는 1개의 어드레스 변경자( near, far 등 )를 그리고, 1개의 함수에는 1개의 언어변경자(cdecl, pascal, 또는 interrupt) 만이 주어질 수가 있다. 

※ Constant expression required 
배열은 상수크기로 선언되어야 한다. 이 에러는 보통 #define 상수의 잘못된 철자법으로 야기된다. 

※ Could not find file `XXXXXXXX.XXX' 
컴파일러가 명령행에서 지정된 화일을 찾을 수가 없다. 

※ Declaration missing; 
소스화일이 뒤에 세미콜론( ; ) 이 없는 구조체(struct)나 공용체(union) 필드 선언을 포함하고 있다. 

※ Declaration needs type or storage class 
변수선언에 형 혹은 기억 클래스의 지정이 없다. 이것은 다음과 같은 문이 잘못되었음을 나타낸다. 

i, j; 

※ Declaration syntax error 
선언문 중에 문법에러가 있다. 사용자의 소스 화일에 있는 선언문에 필요한 기호를 빠뜨렸거나 필요없는 기호가 들어 있다. 

※ Default out of switch 
switch 문 밖에 default 문이 있다. 컴파일러가 switch 문 밖에서 default 문을 만났을 때 야기 된다. 이것 역시 잘못 대응된 괄호 때문에 야기 된다. 

※ Define directive needs an identifier 
#define 뒤에 첫번째 비공백문자는 식별명(identifier)이 와야 하는데 컴파일러가 다른 문자를 발견했다. 

※ Division by zero 
소스 화일에 0으로 나누는 상수식이 있다. 

※ Do statement must have while 
do 문 중에서 while 이 없다. 

※ Do-while statement missing ( 
do 문 중에서 while 뒤에 좌괄호 ( ( )가 없다. 

※ Do-while statement missing ) 
do 문 중에서 while 뒤에 우괄호 ( ) )가 없다. 

※ Do-while statement missing ; 
do 문 중에서 우괄로 뒤에 ( ; )이 없다. 

※ Duplicate case 
switch 문의 각 case 는 고유한 상수식을 가져야 한다. 

※ Enum syntax error 
enum 선언중에 문법에러가 있다. 즉, enum 선언이 적정하게 형성되 식별명 리스트를 포함하지 않고 있다. 

※ Enumeration constant syntax error 
enum 선언에서 주어진 식의 값이 상수가 아니다. 

※ Error Directive:XXXX 
#error 가 실행된 경우에 표시된다. 이 메시지는 #error 선언이 적정하게 형성된 식별명 리스트를 포함하지 않고 있다. 

※ Error writing output file 
작업용 디스크가 꽉 찼을 때라든가 파괴된 경우에 표시된다. 

※ Expression syntax 
식에 문법에러가 있어 컴파일러가 식의 구문을 분석할 때 심각한 에러를 만나면 이 메시지를 표시한다. 이러한 에러의 원인은 대체로 두개의 연속된 연산자 혹은 잘못 대응된 괄호나 이것의 생략, 그리고 앞의 문에 세미콘론이 빠진 경우 발생하게 된다. 

※ Extra parameter in call 
프로토타이프로 정의된 포인터 함수 호출에 대해 인수가 너무 많다. 

※ Extra parameter in call to XXXXXXXX 
프로토타이프로 정의된 화일명이 너무 길다. DOS에서의 화일명은 최대 64문자 이다. 

※ File name too long 
#include 로 지정한 화일명이 너무 길다. DOS에서의 화일명은 최대 64문자 이다. 

※ For statement missing ) 
for 문에서 for 뒤에 좌괄호 ( ( )가 없다. 

※ For statement missing ( 
for 문에서 for 뒤에 좌괄호 ( ) )가 없다. 

※ For statement missing ; 
for 문에서 for 뒤에 좌괄호 ( ; )가 없다. 

※ Function call missing ) 
함수 호출의 인수리스트에 괄호가 빠졌거나 잘못 대응된 괄호가 있다. 

※ Function definition out fo place 
함수 정의가 다른 함수의 내부에서 행해질 수가 없다. 인수리스트를 갖는 함수의 시작 처럼 보이는 선언이 함수내에 있을 때 함수정의로 간주된다. (즉, 함수중에 함수정의 처럼 보이는 것이 있다.) 

※ Function doesn't take a variable number of arguments 
가변갯수(variable number)의 인수를 취하지 못하는 함수에서 va_start 마크로가 사용되고 있다. 

※ Goto statement missing lable 
goto 뒤에는 식별명이 필요하다. 

※ If statement missing ( 
if 문에 대해서 if 뒤에 좌괄호 ( ( ) 가 없다. 

※ If statement missing ) 
if 문에 대해서 if 뒤에 우괄호 ( ) ) 가 없다. 

※ Iegal character `C' (0xXX) 
소스화일중에 잘못된 문자 c 가 있다. 잘못된 문자의 값이 16진법의 값으로 인쇄된다. 

※ Illegal initialization 

초기화는 상수식이나 혹은 전역(global) 외부변수(extern), 아니면 정적변수(static)의 어드레스에 상수를 더하거나 감할 필요가 없다. 

※ Illegal octal digit 

8진법【?올 수 없는 숫자 8과 9가 있다. 

※ Illegal pointer subtraction 
포인터가 아닌 것을 포인터로 끌어 냈다. 

※ Illegal structure operation 
구조체에 대해서 피리어드( . ), 번지지정( & ), 대입연산자( = ) 이외의 연산자를 사용하고 있다. 

※ Illegal use of floating point 
부동소수점 상수에 대해서 쉬프트(shift), 비트 논리 연산자, 조건식( ?: ), 간접참조( * ) 등의 연산을 행하고 있다. 컴파일러는 이들 금지된 연산자를 갖는 부동소숫점 오퍼런드를 발견했다. 

 Illegal use of pointer 
포인터에 대해서 덧셈, 뺄셈, 대입, 관계, 간접( * ), 화살기호( -> )이외의 연산자를 사용하고 있다. 

※ Improper use of a typedef symbol 
typedef 에서 선언되어 있는 기호가 식에 나타나 있지 않다. 기호의 선언과 발생가능한 철자오류를 처크해야 한다. 

※ Inline assembly not allowed 
행단위 어셈블리 문이 존재하는 소스화일을 통합환경으로부터 컴파일하도록 한다. 이것을 컴파일하기 위해서는 TCC 명령어를 사용할 필요가 있다. 

※ Incompatible storage class 
함수의 기억 클래스의 정의에 extern 을 사용하고 있다. 사용자의 소스화일이 함수정의에서 키워드인 extern 을 사용했다. 오직 static 만이 허용된다. 

※ Incompatible type conversion 
소스화일이 어떤 형에서 또다른 형으로 변환하려고 할때 이 두가지의 형은 호환되지 않는다. 여기에서 함수와 비함수간의 변화, 구조체 또는 배열과 스칼라형간의 변환, 아니면 여기에서 함수와 비함수간의 변환, 구조체 또는 배열과 스칼라형간의 변환, 아니면 부동소숫점 값과 포인터형 사이의 변환이 포함된다. 

※ Incorrect command-line argument:XXXXXXXX 
컴파일러가 명령행 인수를 정당한 것으로 인식하지 않는다. 

※ Incorrect configuration file argument:XXXXXXXX 
컴파일러가 configuration 화일 인수를 정당한 것으로 인식하지 않으므로 앞에 오는 대쉬( - )를 검사해볼 필요가 있다. 

※ Incorrect number format 
16 진수 중에 소숫점이 있다. 

※ Incorrect use of default 
default 뒤에 콜론 ( : ) 이 없다. 

※ Initializer syntax error 
초기화 부분에서 문법에러가 존재한다. 즉, 초기화할 때 연산자가 빠졌거나 필요없는 연산자, 잘못 대응된 괄호 아니면 형식화가 잘못된 것 등이 있다. 

※ Invalid indirection 
간접 연산자 ( * ) 의 사용방법이 부적적하다. 

※ Invalid macro argument separator 
마크로 정의내에서의 인수는 컴마 ( , ) 구분되어야 한다. 컴파일러가 인수면 뒤에 어떤 다른 문자를 만났다. 

※ Invalid pointer addition 
2개의 포인터를 더해서 합하려고 했다. 

※ Invalid use of arrow 
포인터의 arrow 연산자 ( -> ) 바로 뒤에 식별명 (필드명)이 와야 한다. 

※ Invalid use of dot 
도트 연산자 ( . ) 의 바로 뒤에는 식별명이 와야 한다. 

※ Lvalue required 
대입 연산자 ( = )의 좌변은 어드레스를 지정할 수 있는 식으로 표현되어야 한다. 여기에는 수치 변수, 포인터 변수, 구조체의 필드명, 포인터에 의한 간접참조, 배열요소 등이 포함된다. 

※ Macro argument syntax error 
마크로 정의에서 인수부분에 문법에러가 존재한다. 즉 마크로 정의에서 인수는 식별자이어야 하는데 인수가 예상되는 곳에 비 식별자 문자가 있다. 

※ Macro expansion too long 
마크로는 4,096 문자 이상으로 전개될 수 없다. 예를 들면, 이 에러는 마크로가 재귀적으로 자기자신을 전개하려 하는 경우에 발생한다. 마크로는 자기자신을 합법적으로 전개 할 수가 없다. 

※ May compile only one file when an output file name is given 
한개의 출력 화일명만을 허용하는 명령행 옵션으로 -o 을 지정하면 출력화일은 한개로 되고 선두의 화일만이 컴파일 된다. 

※ Mismatched number of parameters in definition 
함수를 정의하고 있는 곳에서의 인수형과 함수 프로토타이프의 인수형이 일치하고 있지 않다. 

※ Misplaced break 
switch 문 혹은 루프구조의 밖에 break 문이 있다. 

※ Misplaced contionue 
루프 고조의 밖에 continue 문이 있다. 

※ Misplaced decimal point 
부동소숫점 상수의 지수부분에 소숫점이 있다. 

※ Misplaced else 
if 문과 대응하진 않는 else 문이 존재한다. 이 같은 에러는 잘못된 else 문, 불필요한 세미콜론, 괄호의 생략 혹은 앞에서 if 문에 의해서 발생한다. 

※ Misplaced elif directive 
#if, #ifdef, #ifndef 문과 대응되지 않는 #elif 가 존재한다. 

※ Misplaced else directive 
#if, #ifdef, #ifndef 문과 대응되는 않는 #else 가 존재한다. 

※ Misplaced endif directive 
#if, #ifdef, #ifndef 문과 대응하지 않는 #endif 가 존재한다. 

※ Must be addressable 
어드레스 연산자 ( & ) 가 특정 어드레스에 놓여있지 않은 변수 (예를 들어 레지스터 변수)에 적용되고 있다. 

※ No file name ending 
#include 문의 화일명을 닫는 괄호 ( > ), 혹은 인용부호 ( " )가 없다. 

※ No file names given 
터보 C의 컴파일 명령 (TCC)에 화일명이 포함되어 있지 않다. 소스화일명을 지정해야한다. 

※ Non-portable pointer assignment 
포인터를 포인터가 아닌것으로 대입하도록 지정하고 있다. 또한 그 반대로 행하도록 하고 있다. 여기서 상수 0 을 포인터에 지정하는 것은 특수한 경우로 허용된다. 만일 비교가 옳은 경우에는 이 에러 메시지를 방지하기 위해서 캐스트(cast) 를 사용해야 한다. 

※ Non-portable pointer comparison 
소스화일이 상수 0 을 제외하고 포인터와 비포인터사이에 비교를 수행했다. 만일 비교가 옳은 경우에는 이 에러 메시지를 방지하기 위해서 캐스트 (cast) 를 사용해야 한다. 

※ Non-portable return type conversion 
return 문 가운데에서 식의 형이 함수의 형과 일치하고 있지 않다. 한가지 예외는 함수나 리턴식이 포인터일 경우 에는 이 에러 메시지를 방지하기 위해서 캐스트 (cast) 를 사용해야 한다. 

※ Not an allowed type 
배열이나 함수를 리턴하는 함수처럼 허용되지 않는 형을 선언하고 있다. 

※ Out of memory 
사용하고 있는 작업 메모리의 영역이 부족하다. 기계상에서 더많은 메모리를 확보해서 화일을 컴파일해야 한다. 이미 64K를 사용하고 있는 경우에 소스화일을 단순화시켜야 한다. 

※ Pointer required on left side of -> 
화살표 연산자 ( -> ) 의 좌측에 포인터 이외의 것이 있다. 화살표 ( -> ) 좌측에는 포인터가 있어야 한다. 

※ Redeclaration of `XXXXXXXX' 
명명된 식별자가 이미 앞에서 선언되어 있기 때문에 똑같은 이름이 2회이상 선언되어 사용되고 있다. 

※ Size of structure or array not know 
미정의된 구조체나 크기가 지정되지 않은 빈 배열에 sizeof (또는 기억공간선언)가 사용되고 있다. 구조체는 그 크기가 필요료 하지 않는 한 그것이 정의되기 전에 참조될 수 도 있다. 배열은 그 선언이 기억공간을 준비하지 않는 경우나 또는 선언 뒤에 그 길이를 제시하는 초기화가 되어 있는 경우에 비어 있는 길이로 선언될수 있다. 

※ Statement missing; 
맨 뒤에 세미콜론 ( ; ) 이 없는 문이 있다. 

※ Structure or union syntax error 
Struct 혹은 union 의 뒤에 식별명이 없거나 여는 괄호 ( { ) 가 없다. 

※ Structure size too large 
메모리에 들어갈 수 없는 크기의 구조체를 선언하고 있다. 소스화일에서 선언된 구조체가 너무 많은 기억장치를 요구하기 때문에 사용가능한 메모리에 적합하지 않다. 

※ Subscripring missing ] 
우괄호 ( ] ) 가 없다. 이것은 필요한 연산자가 없가나 불필요한 연산자 혹은 잘못 대응된 괄호에 의해서 발생된다. 

※ Switch statement missing ( 
switch 문에서 키워드 switch 뒤에 좌괄호 ( ( ) 가 없다. 

※ Switch statement missing ) 
switch 문에서 키워드 switch 뒤에 우괄호 ( ) ) 가 없다. 

※ Too few parameters in call 
프로토타이프에서 정의된 포인터 함수를 호출 ( 함수 포인터를 통해 ) 하는데 있어서 인수의 수가 너무 적다. 프로토타이프는 주어지는 모든 인수를 요구한다. 

※ Too many cases 
switch 문 가운데에 case 문이 최대 257 개로 제한된다. 

※ Too many decimal points 
부동소숫점 상수에 소숫점이 여러개가 있다. 

※ Too many default cases 
1개의 switch 문 가운데에 default 문이 여러개가 있다. 

※ Too many exponents 
부동소숫점 상수중에 지수부가 여러개 있다. 

※ Too many initializers 
허용된 갯수 이상의 초기화를 수행하고 있다. 

※ Too many storage classes in declaration 
하나의 선언에서 여러개의 기억 클래스르 선언하고 있다. 

※ Too many types in declaration 
하나의 선언에서 여러개의 기본형을 지정하고 있다. 즉, char, int, float, double, struct, enum, 또는 typedef-name 

※ Too many auto memory in function 
현재 함수가 사용가능한 메모리 상에서 사용하는 공간보다 더 많은 자동기억 영역 ( automatic storage ) 을 선언했다. 

※ Too much code defined in file 
현재 소스화일에 있는 함수의 총 크기가 64K바이트를 초과한다. 이때 필요하지 않은 코드를 삭제하든가 소스화일을 분할해 주어야 한다. 

※ Too much global data defined in file 
global 데이터 선언의 총합계가 64K 바이트를 초과했다. 배열에 대한 선언이 너무 크지 않은가를 검사해야 하며, 또한 모든 선언이 필요한 프로그램을 재구성해야 한다. 

※ Too consecutive dots 
생략은 두개의 점 ( ... ) 으로 되어 있고 소숫점이나 멤버 선택 연산자는 하나의 점 ( . ) 을 사용하고 있기 때문에 C 프로그램에서는 세게의 연속한 점( .. ) 이 나올수 없다. 

※ Type mismatch in parameter # 
프로토타이프에서 정의된 포인터 함수의 호출시에 #N 번째의 인수가 선언되어 있는 형으로 변환될 수 있다. 

※ Type mismatch in parameter # in call to `XXXXXXXX' 
소스 화일이 프로토타이프로 지명된 함수 를 선언했고 주어진 #N ( 1부터 좌에서 우로 계산 ) 번째의 인수는 선언되어 있는 인수형으로 변환될 수 없다. 

※ Type mismatch in parameter `XXXXXXXX' 
소스화일이 프로트타이프로 함수 포인터를 통해서 호출된 함수를 정의했고 지명된 인수는 선언되어 있는 인수형으로 변환되 수 없다. 

※ Type mismatch in parameter `XXXXXXXX' in call to `YYYYYYYY' 
소스화일이 프로토타이프로 지명된 함수를 선언했고, 지명된 인수는 선언되어 있는 인수형으로 변환 될 수가 없다. 

※ Type mismatch in redeclaraton of `XXX' 
소스화일이 원래 있는 변수에 대해 선언된 것과는 다른 형으로 변수를 재차 선언했다. 이와 같은 경우는 함수가 정수이외의 값은 리턴하도록 다음에 선언되거나 호출될 때만 발생한다. 이것이 발생한 경우에는 최초의 함수 호출이 있기 전에 그 함수를 선언해야 한다. 

※ Unable to create output file `XXXXXXXX.XXX' 
이 에러는 작업용 디스크가 꽉 찼거나 쓰기금지가 된 경우에만 발생한다. 디스크가 찼을 겨우에는 불필욯나 화일ㅇ르 삭제하고 컴파일을 다시한다. 디스크가 쓰기금지가 되어 있는 경우에는 소스화일을 쓰기가능한 디스크로 옮기고 다시 컴파일을 시작해야 한다. 

※ Unable to create turboc.lnk 
컴파일러가 디스크를 액세스할 수 없거나 디스크가 꽉 찼기 때문에 임시화일 ( temporary file ) 인 TURBO.$LN을 생성할 수가 없다. 

※ Unable to execute command `XXXXXXXX' 
TLINK 나 또는 TASM 을 발견할 수 없다. 또한 디스크가 잘못됐을 가능성도 있다. 

※ Unable to open include file `XXXXXXXX.XXX' 
컴파일러가 지명된 화일을 찾을 수가 없다. 이것은 #include 화일이 그 자신을 포함하거나 사용자의 루트 디렉토리상에서 CONFIG.SYS 안에 설정된 FILES 가 없을 때 야기 된다. ( FILES=20 ) 지명된 화일이 존재하는지를 검사해야 한다. 

※ Unable to open input file `XXXXXXXX.XXX' 
이 에러는 소스화일을 찾지 못할 때 발생한다. 이름의 철자를 검사하고, 화일이 올바른 디스크나 디렉토리상에 존재하는지를 체크한다. 

※ Undefined label `XXXXXXXX' 
goto 문에서 사용되고 있는 레이블 ( lable ) 이 정의되어 있지 않다. 

※ Undefined structure `XXXXXXXX' 
구조체 `XXXXXXXX' 가 정의되어 있지 않다. 이것은 구조체 명의 철자가 틀렸거나 선언을 하지 않았을 때 생긴다. 

※ Undefne symbol `XXXXXXXX' 
식별명 `XXXXXXXX' 가 선언되어 있지 않다. 이것은 지정이나 선언하는 시점에서 잘못된 철자에 의해서 야기된다. 또한 식별자 선언에서 에러가 있을 때도 생긴다. 

※ Unexpected end of file in comment started on line # 
소스화일이 코멘트의 중간에서 끝났다. 이것으 보통 코멘트의 종료 ( * / ) 표시를 빠뜨렸을 때 생긴다. 

※ Unexpected end of file in conditional started on line # 
컴파일러가 #endif 를 만나기 전에 소스화일이 끝났다. 이때는 #endif 가 빠졌거나 철자가 잘못되었다. 

※ Unknow preprocessor directive:`XXX' 
#뒤에 다음과 같은 것 이외의 문자열이 왔다. define, undef, line, if, ifdef, ifndef, include, else, endif 

※ Unterminated character constant 
대응하지 않는 단일 인용부호( ' ) 가 존재 하고 있다. 

※ Unterminated string 
문자열 혹은 문자상수가 시작된 후 종료의 인용부호 ( " 나 ' ) 가 없다. 

※ User break 
통합환경에서 컴파일 또는 링크하는 도중에 CTRL + BREAK 가 입력되었다. ( 이것은 에러는 아니고 단지 확인이다.) 

※ While statement missing ( 
while 문에서 키워드 while 뒤에 좌괄호 ( ( ) 가 없다. 

※ While statement missing ) 
while 문에서 조건식 뒤에 우괄호 ( ) ) 가 없다. 

※ Wrong number of arguments in call of `XXXXXXXX' 
마크로가 정의한 인수의 갯수와 호출한 쪽의 인수의 갯수가 일치하지 않는다.  Warnings 
--------------------------------------------------------------------------------

※ `XXXXXXXX' declared but never used 
소스화일이 블럭의 끝나는 부분으로서의 변수 `XXXXXXXX' 를 선언하고 있지만 전혀 사용하고 있지 않다. 이 경고는 컴파일러가 복수의 명령문이나 함수의 닫힘괄호 ( } )를 만날때 표시한다. 변수 선언은 복수의 명령문이나 함수의 시작지점에서 나타낸다. 

※ `XXXXXXXX' is assigned a value which is never used 
변수 `XXXXXXXX' 는 지정문 또는 대입문에서는 사용되고 있지만, 그 외에 함수가 끝나는 곳에서느 전혀 사용되지 않는다. 이 경고는 컴파일러가 닫힘 괄호 ( } )를 만날때만 표시된다. 

※ `XXXXXXXX' not part of structure 
이 경고는 필드 `XXXXXXXX' 가 ( . ) 혹은 ( -> ) 의 좌측에 있는 구조체의 일부가 아니거나 그렇지 않으면 좌측이 구조체나 포인터가 아닌 경우에 표시된다. 

※ Ambiguous operators need parentheses 
이 경고는 시프트 연산자, 관계 연산자, 비트 논리 연산자가 괄호없이 함께 사용될 경우에 표시된다. 또한 시프트 연산자를 괄호없이 나타내는 가감연산자도 이러한 경고를 발생시킨다. 연산에서 지정되는 우선 순위는 직관과는 반대의 경향이 있기 때문에 프로그래머들은 종종 이들 연산자의 우선 순의를 혼동하게 된다. 

※ Both return and return of a value used 
이 경고는 컴파일러가 함수에서 이전 return 문과 일치하지 않는 return 문을 만날 때 발생한다. 이것은 함수가 몇개의 return 문에서만 값을 리턴하는 경우의 에러이다. 

※ Call to function with no prototype 
함수를 프로토타이프에서 선언하기 전에 호출하면 이 경고가 표시된다. 

※ Call to function `XXXX' with no prototype 
함수 `XXXX' 를 프로토타이프에서 선언하기 전에 호출하면 이 경고가 표시된다. 

※ Code has no effect 
이 경고는 컴파일러가 아무런 효과도 없는 연산자가 존재하는 문을 만날 때 발생한다. 가령 a+b;와 같은 문은 어느 쪽의 변수에도 영향을 주지 않는다. 따라서 이 연산은 불필요하며 버그로 된다. 

※ Constant is long 
이 경고는 컴파일러가 32767 보다 큰 십진 정수이거나 65535 보다 큰 8진(혹은16진) 정수이면서 뒤에 l 이나 L 이 붙지 않는 경우를 만날 때 생긴다. 이러한 상수는 long 형으로 처리된다. 

※ Constant out of range in comparison 
범위를 넘느 정수와 비교한다. 비교하는데 있어서 어떤 정수식이 또 한쪽의 정수식의 형에 허용되는 범위 밖의 값인 경우에 이 경고가 표시된다. 예를 들면 unsigned 형의 값을 -1 과 비교하는 것 등은 말이 되지 않는다. 
10 진수인 32767 보다 더 큰 unsigned 형 정수를 갖기 위해서는 이 정수를 unsigned (예, (unsigned) 65535)로 캐스트(cast) 하거나 또는 정수에 문자 u 나 U 를 붙인다. (예 65535) 

※ Conversion may lose significant digits 
지정 연산자등에 대해서 long 혹은 unsigned long 으로부터 int 혹은 unsigned int 로 변환이 행해지고 있는 경우에 이경고가 표시된다. 어떤 기계에서는 int 형과 long 형 변수가 같은 크기를 가지기 때문에 이와 같은 변환은 포토 (ported) 되는 프로그램의 수행을 변경시킬 수도 있다. 
이러한 경고가 발생될 때마다 컴파일러는 그 비교를 하기 위해서 여전히 코드를 생성시키게 된다. 이 코드가 가령 char 형의 식을 4000에 비교하는 것과 같이 항상 똑같은 결과를 주면서 끝나는 경우 코드는 그 테스트를 계속 수행하게 된다. 
이것은 또한 unsinged 형이 8086 상에서 -1 과 똑같은 비트형태를 가질 수 있기 때문에 unsign- ed형의 식을 -1 과 비교함으로써 무엇인가 유용한 것을 수행할 수 있음을 의미한다. 

※ Function should return a value 
소스화일에서 함수가 int 나 void 형 이외의 값을 리턴하도록 선언되었는데, return 문에서 값을 리턴하지 않는다. 이것은 보통 있는 에러의 종류이다. 이전의 C 버전에서는 값을 리턴하지 않는 함수를 지정하는 void 형이 없기 때문에 int 함수는 제외가 된다. 

※ Hexadecimal or octal constant too large 
문자열 또는 문자상수에 있어서 255 를 초과하는 값을 갖는 8진 혹은 16진수의 에스케이프 시컨스 (예 777, x1234) 를 사용했을 때 이 경고가 표시된다. 

※ Mixing pointers to signed ans unsigned char 
char형 포인터로부터 unsigned char 형의 포인터로 (혹은 역으로) 캐스트(cast) 없이 변환되었다. 엄격히 말하면, 이것은 틀린 것이지만 8086 상에서는 별다른 장해가 없다. 

※ No declaration for function `XXXXXXXX' 
이 경고 메시지는 "Declaration required" 경고가 가능하고, 또한 함수를 선언하지 않고 호출되는 경우에 표시된다. 이 선언은 고전적 혹은 현재적 프로토타이프 형식으로 될 수 있다. 

※ Non-portable pointer assignment 
소스화일이 포인터가 아닌 것에 지정을 했거나 또는 그 반대로 지정했다. 포인터 상수 0 을 지정하는 것은 특수한 경우로 허용된다. 비교가 정당한 경우에는 이와 같은 경고를 방지하기 위해서 캐스트를 사용해야 한다. 

※ Non-portable pointer comparison 
소스화일이 포인터를 포인터가 아닌것 (상수 0 이외의 것) 과 비교를 했다. 비교가 정당한 경우라면 이와 같은 경고를 방지하기 위해서 캐스트를 사용해야 한다. 

※ Non-portable return type conversion 
return 문에서의 식이 함수선언에서의 형과 일치하지 않고 있다. 다만 함수나 리턴식이 포인터일 경우에 예외가 된다. 이 예외는 포인터를 리턴하는 함수가 상수 0을 리턴하는 경우이다. 이때 0 은 적절할 포인터 값으로 변환되게 된다. 

※ Parameter `XXXXXXXX' is never used 
함수에서 선언된 지명 파라미터가 함수 중에서 사용되진 않았다. 이것은 에러가 될 수도 있고 아닐 수도있으며, 파라미터의 철자오류에 의해서 종종 야기된다. 또한 이와 같은 경고는 식별자 ( identifier ) 가 함수 안에서 자동지역변수 ( automatic local variable ) 로 다시 선언될 때 발생될수 있다. 이 인수는 자동변수 에 의해 마스크로 되고 사용되지 않게 된다. 

※ Possible use of `XXXXXXXX' before definition 
소스화일이 식에서 지정된 변수를 값이 지정되기 전에 사용했다. 컴파일러는 프로그램의 간단한 스캔을 통해서 이 조건을 결정한다. 어떠한 지정이 있기전에 실제로 이 변수의 사용이 발생하는 경우에 이 경고가 발생되게 된다. 물론, 프로그램의 실제 플로우가 변수를 사용하기 전에 지정할 수도 있다. 

※ Possible incorrect assignment 
이 경고는 컴파일러가 조건식의 주 연산자 ( 즉, if, while 또는 do-while 문 등 ) 로서 대입 연산자 ( assignment ) 를 만날 때 발생하게 된다. 이것은 종종 항등 연산자 ( equality operator ) 에 대한 인쇄상의 에러로서 이와 같은 경고를 방지하기 위해서는 대입문을 괄호로 묶고 그 전체를 0과 비교하게 한다. 즉, 

if (a = b) . . . 
을 다음과 같이 다시 써준다. 

if ( (a = b) != 0 ) . . .



※ Redefinition of `XXXXXXXX' is not 
소스화일 이전에 정의하고 있는 마크로를 처음 정의와 같지않은 텍스트를 사용해서 재정의 하고 있다. 이 경우 새로운 마크로가 이전의 것을 대체하게 된다. 

※ Restarting compile using assembly 
컴파일러가 -B 명령행 옵션 혹은 #pragma inline 문이 수반되지 않는 asm 을 만났다. 이 경우에 어셈블리 언어 기능을 사용해서 컴파일을 다시 시작한다. 

※ Structure passed by value 
만일 "Structure passed by value" 의 경고가 가능하다면, 이 경고는 구조체가 인수로 서의 값으로 전달될 때마다 발생하게 된다. 구조체를 인수로서 전달할 때 자주 생기는 프로그래밍상의 오류는 구조체에 대한 어드레스 연산자 ( & ) 를 생략하는 것이다. 이와 같은 생략은 구조체가 값으로 전달될 수 있기 때문에 허용될 수가 있다. 따라서 이 경고는 컴파일러가 사용자에게 이러한 실수를 경고하는 하나의 방법을 제시한다. 

※ Superfluous & with function or array 
배열이나 함수명에는 어드레스 연산자 ( & ) 를 붙일 필요가 없다. 이 경우에 어드레스 연산자는 삭제된다. 

※ Suspicious pointer conversion 
다른 형을 가르키는 포인터 사이에서 변환을 수행하고 있다. 이 변환이 정당한 경우에는 이러한 경고를 방지하기 위해서 캐스트를 사용해야 한다. 

※ Undefined structure `XXXXXXX' 
지정된 구조체가 소스화일에서 사용되었지만 구조체의 포인터에 대해서는 소스화일에서 정의가 없다. 이것은 구조체명의 잘못된 철자오류나 선언을 하지 않음으로써 야기될 수 있다. 

※ Unknown assembler instruction 
컴파일러가 허용되지 않은 명령코드( opcode ) 를 갖는 인라인 어셈블리 문을 만났다. 이 경우에 opcode 의 철자법을 조사해야 한다. 명령문이 허용되는 지의 여부를 알기 위해서는 허용된 opcode 의 리스트를 체크해야 한다. 

※ Unreachable Code 
break, continue, goto, return 문의 뒤에 레이블 혹은 함수나 루프의 끝이 존재하지 않고 있다. 따라서 무한 루프에 빠질 위험이 있다. 이 경우 컴파일러가 상수 검사조건을 갖는 while, do 그리고 for 루프를 체크해서 종료되지 않는 무한 루프를 인식하려 하게 된다. 

※ Void functions may not return a value 
소스화일은 현재의 함수가 void 를 리턴하는 것으로 선언했지만, 컴파일러가 값을 갖는 retu- rn 문을 만났다. 이경우 return 문의 값은 무시된다. 

※ Zero length structure 
소스화일은 총 크기가 0 인 구조체를 선언했다. 이 구조체의 사용은 에러가 된다.

출처: https://mysource.tistory.com/entry/Error-메세지-모음 [Storage]

반응형

'Software' 카테고리의 다른 글

sizeof()와 포인터  (0) 2022.07.06
Yocto Project 소개  (0) 2021.08.18
Secure Cordng C - Expression  (0) 2018.08.30
Secure Cordng C - Declaration  (0) 2018.07.24
Secure Cordng C - Preprocessor  (0) 2018.07.23