본문 바로가기

c,c++

(3)
함수포인터 / 함수 객체 / 람다 간단 정리 * 함수 포인터 - 함수 시작 위치를 저장하는 포인터 변수 int (*fp)(int, char) /* 반환형 int, parameter로 int, char을 가지는 함수 주소를 가리킬 수 있는 함수 포인터 선언 */ //typedef로 자료형 등록 가능 typedef int(*FP)(int, char); //함수 포인터 등록 int A(int a, char b){ /*something*/ } int B(int a, char b){ /*something*/ } int (*fp)(int, char) fp = A; fp = B; - callback / 확장성을 위해 사용된다. - inline 사용 불가 * 함수 객체 - operator ()를 오버라이딩하여 사용 class A(){ public: int ope..
printf vs puts puts와 printf의 동작 상 차이점은 개행 여부이다. - printf는 개행을 해주지 않고, puts는 자동으로 개행을 해준다 puts와 printf의 사용 상 차이점은 formatting 여부이다 - printf는 formatting을 위한 가변인자가 존재하지만, puts는 고정된 문자열만 출력 가능하다. printf 는 사실 vfprintf의 wrapper 함수이다. (https://code.woboq.org/userspace/glibc/stdio-common/printf.c.html) vfprint는 puts에 비해 많이 복잡하다. 별다른 옵션을 주지 않는다면, printf 는 fputs로 최적화 될 수 있다고 한다. 이를 막고 싶다면, compile option에 -fno-builtin 을 ..
Implicit declaration of function gcc로 컴파일하는 과정에서 Implicit declaration of function 메시지가 떴다. 위의 메시지는 prototype 선언 없이 함수를 사용하려고 할 때 뜬다고 한다. 예시로 다음과 같이 코드를 작성하면 Implicit declaration of function message가 뜬다. #include /*char ntoc(int a); //