컴파일 시 소스에 이상이 없다고 판단되는데도 에러가 발생할 경우 참고하면 도움이 됨.
- 리눅스에서는 커널의 헤더 파일과 동일한 이름으로 헤더 파일을 선언해서 컴파일 오류가 발생.
의존성 체크 결과, 커널의 헤더 파일을 참조해야 하는데 사용자 헤더 파일을 참조하고 있었음.
<Time.h>,"Time.h"로 완벽하게 구별이 되지 않는 것 같음.
함수의 리턴 데이터 타입은 bool로 기록하여 함수만 봐도 리턴값을 예측할 수 있도록 하자
비교문 안에 true, false와 직접적으로 기록하지 말자
예) if(a==true)
stdbool.h 파일 내용
/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING. If not, write to
the Free Software Foundation, 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA. */
/* As a special exception, if you include this header file into source
files compiled by GCC, this header file does not by itself cause
the resulting executable to be covered by the GNU General Public
License. This exception does not however invalidate any other
reasons why the executable file might be covered by the GNU General
Public License. */
/*
* ISO C Standard: 7.16 Boolean type and values <stdbool.h>
*/
#ifndef _STDBOOL_H
#define _STDBOOL_H
#ifndef __cplusplus
#define bool _Bool #define true 1 #define false 0
#else /* __cplusplus */
/* Supporting <stdbool.h> in C++ is a GCC extension. */
#define _Bool bool
#define bool bool
#define false false
#define true true
#endif /* __cplusplus */
/* Signal that all the definitions are present. */
#define __bool_true_false_are_defined 1
결론>
- int가 char보다 속도가 빠르다.
- 메모리가 부족하다면 char, 아니라면 int
- 데이터 타입이 다른 것끼리 연산할 경우 반드시 데이터 타입을 동일하게 형변환하여 연산
그렇지 않으면, 컴파일 오류가 발생하지 않아도 결과가 어떻게 나올 지 판단하기 어려움