[C] C언어로 쓴 파일 CPP로 변환하기

2018. 7. 18. 17:36언어별 정리 자료/C, CPP

[C] C언어로 쓴 파일 CPP로 변환하기


    C++이 딱히 필요 없었던 날이 있었습니다. class 같은 객체 지향 언어가 필요할 때에는 Python, Java등을 사용하면 되었으니까 공부 할 때에는 편한 ( python 등은 알고리즘 공부 할 때에 자주 안쓰다 보니 입출력에서 문제가 자주 생겼었고, 그에 따라 C가 상대적으로 쉽게 느껴졌습니다. ) C 언어를 주로 사용하게 되었던 것 같습니다. STL로 만들어져있는 vector, stack, queue 등도 그냥 그 자리에서 간단하게 구현하여 썼는데, 이번에 새로운 알고리즘을 사용하려다 보니 미리 만들어져 있는 STL을 쓰는것도 나쁘지 않다고 생각이 들었습니다. 그러나 cout / cin 등은 알고리즘의 수행시간에 관계 없이 상당히 많은 시간을 잡아먹어 알고리즘 문제 풀이에 영향을 줍니다. 따라서 C 언어로 된 scanf 혹은 printf 등을 사용하여 입출력을 하려고 하다 보니 C 언어를 C++ 파일로, 정확히는 C++ 버전의 C언어 함수를 사용하기 위해 알아보는 시간이 필요했습니다. 코드로 비교해 보면서 진행 해 보겠습니다.

#include<stdio.h>
// [C언어] : Header 파일은 .h 로 끝남.

int main()    {
    printf("Hello World!\n");
    return 0;
}
[ 일반적인 C 언어 소스 코드. ]

#include<cstdio>
// [C++] : Header 파일에 .h가 없고, 앞에 c 를 붙임. ( 대문자가 아니라 소문자임에 유의할 것. )

// using namespace 는 쓰지 않아도 좋음. 
int main()    {
    printf("Hello World!\n");
    return 0;
}
[ C++ 로 변환한 소스 코드. ]

unsing namespace std; 는 일종의 import * 같은 느낌으로 std::cout 을 cout으로 쓰기 위한 것 이기 때문에 cout / cin 등의 iostream에 속해있는 함수를 쓰지 않는다면 따로 쓸 필요는 없습니다. 다른 built-in C 함수들도 마찬가지로 사용하시면 됩니다.

#include<stdio.h>
#include<string.h>

int main()    {
    char str[200];
    strcpy(str, "Hello World!\n");
    printf("%s\n", str);

    return 0;
}
[ 간단한 strcpy를 사용하는 소스. ]

#include<cstdio>
#include<cstring>

int main()    {
    char str[200];
    strcpy(str, "Hello World!\n");
    printf("%s\n", str);

    return 0;
}
[ C++ 로 변환한 소스 코드. ]

다음과 같이 cstring으로 헤더파일만 변화 시킨 후 사용하면 됩니다.

추가로 소스 코드를 리눅스로 컴파일 할 때에는 C언어에서 사용하던 gcc 를 사용하지 말고, cpp 전용인 g++을 사용하시면 됩니다. 추가적인 옵션은 동일하게 사용 할 수 있습니다.

'언어별 정리 자료 > C, CPP' 카테고리의 다른 글

[ C ] Static Keyword  (2) 2018.09.11