본문 바로가기

Programming/C

extern "C" 에 대한 설명 출처 : http://jimbo73.egloos.com/1486292 extern "C"에 대하여 알아보자. (사실 이글은, 해당 카테고리에 글이 하나도 없음이 너무 애처로워(?), 여러 글들을 참고하여 날림으로 작성한것이다. ^^) 컴파일러는 링커가 링킹작업시 오브젝트간 함수 이용 및 위치를 파악할 수 있도록, 컴파일시 사용된 함수에 관련한 정보를 오브젝트 파일에 기록하며, 이러한 정보를 linkage라고 한다. 그런데 C 와 C++을 혼합하여 사용 시, 함수이용에 문제가 발생할수 있는데, 이는 두 언어간의 linkage방식이 틀리는데 기인한다. linkage이란 컴파일 시 함수이름 앞 또는 뒤에 '_' 등의 심볼을 덧붙이는 것을 말하는것으로, C 와 C++은 컴파일시 오브젝트 파일에 함수명, 변수명등..
main(), wmain(), _tmain() 의 차이 유니코드 지원이 필요한 프로그램의 경우 _tmain() 혹은 wmain() #define _tmain wmain 유니코드 지원이 필요하지 않은 프로그램의 경우main()
#pragma pack 메모리 최적화 방법.참조 : http://pdw1208.tistory.com/29
extern, 함수에서의 static 함수나 변수 앞에 extern이라는 예약어가 붙으면 외부로 변수를 선언하게 된다. 변수의 extern - 변수의 경우 extern이 앞에 붙어 선언하게 되면 외부로 변수를 선언하게 된다. ex)example.h 파일#pragma once#include int value = 1; main.c 파일#include "example.h" void main(){value = 2;} 다음과 같이 정의하게 되면 example.h 안에 있는 value를 읽어들이지 못하기 때문에 에러가 난다.따라서 example.h파일에서 value 선언부분 앞에 extern을 붙여 value값을 main.c에서도 사용할 수 있게 할 수 있다. example.h 파일#pragma once#include extern int value =..
전처리기, 전처리 지시자 전처리기(Preprocessor)- 컴파일 전에 전처리 지시자로 먼저 정의 되어있는 것들을 프로세서에 등록하는 것. 전처리 지시자(Preprocessor Directives)란?- #include와 같이 앞에 #이 붙는 명령어들을 말한다. 1. #include-특정 소스위에 그 해당 코드를 붙여주는 역할을 한다.#include 옵션에 등록된 해더 파일을 먼저 찾아보고 등록#include "userHeaderfile.h" 프로젝트 위치에 해더파일이 있는지 확인한 후 등록 2. #define, #undef#define은 매크로 함수를 정의하거나 소스 코드 내에서 매크로 상수를 정의 하는데 사용된다. #define add(a,b) (value1)+(value2)int sum = add(1,2);전처리기에 의해..
#pragma once와 #ifndef 의 차이 #ifndef AAA_H#define AAA_H ...... #endif----------------------------------#pragma once ..... ---------------------------------- #ifndef 는 macro wrapper방식을 이용 include의 중복을 방지 하는 것.매크로 처리기를 통해 특정 매크로가 선언되어 있으면 조건이 참이 아니므로 #endif 까지의 코드가 무효화시킴. #pragma once는 directive로 처리기에 직접 지시하는 방법.preprocessor에게 이 파일을 한번만 읽어들이라고 지시하는 것. #ifndef는 전처리기가 파일을 계속 읽어들여 해당 헤더파일을 발견할 때마다 계속 읽으며, #pragma once 는 한번만 읽어 들..
C Study 04 - 함수 함수 1. 함수- 정의 : A group of self-contained declarations and executable statements that perform an activity. 선언과 실행가능한 문장들의 집합.- 함수는 반환타입, 함수 이름, 매개변수(전달인자 or Arguments)로 구성되어 있으며 이를 함수원형(Function Prototype) 이라고 한다. 2. 함수의 종류- 크게 4가지 종류로 나뉜다. 예) 반환 타입(Return Type) 전달 인자(Parameter) void ( void ) { ... } 없음(X) 없음(X) void ( int parameter1, char parameter2) { ... } 없음(X) 있음(O) int ( void ) { ... return..
C Study 03 - 반복문과 조건문 조건문 1. if 와 else - 사용 방식if (연산[논리연산, 대입연산, 증감연산 등의 결과값]) { 하고자하는 명령들.}- 조건문이 0이 아닌 다른 값을 가질때 참으로 판별. else { 하고자하는 명령들.}- if의 조건문이 거짓일 경우 그외 모든 경우를 포함하여 해당 명령을 실행. ※ else if란?else if(연산) 은 독립적으로 if, else, else if로 구분하지 않는다.else와 if를 합쳐놓은 조건 검사문. 예)if (a == 1) {..}else if ( a == 2) {..}else {..} ↓ 아래와 같은 동작if(a == 1) { .. }else {if (a == 2) {..}else {..}} else if는 따로 명령어가 존재한다는 것이 아니라 독립적인 존재인 것이다..