레필리아
'컴퓨터공학 기초/C.C++' 카테고리의 글 목록

컴퓨터공학 기초/C.C++

컴퓨터공학 기초/C.C++

gcc/g++ 특정 워닝 제거 방법

비쥬얼 스튜디오는 #pragma 를 통해 특정 워닝을 제거할 수 있음.하지만, gcc(g++)의 경우 방법을 찾기가 어려웠지만 우여곡절 끝에 알아 냄. 컴파일 옵션으로 -Wno-[워닝 이름] 을 주면 특정 워닝을 무시할 수 있음.예를 들어, -Wno-unused-result 를 주면 unused result 워닝을 무시할 수 있음. -w 옵션을 주면 모든 워닝 무시 가능.

컴퓨터공학 기초/C.C++

윈도우 도스(콘솔) 글자색 배경색 지정하기

#include #include int main(){ // 밝은 청색 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_BLUE | FOREGROUND_INTENSITY); puts("Light Blue"); // 밝은 녹색 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY); puts("Light Green"); // 밝은 시안 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | ..

컴퓨터공학 기초/C.C++

#define 매크로 개념 설명

C/C++ 에서 #define 을 사용을 가급적 자제하도록 권고되고 있지만, 잘 사용할 경우 많은 코딩상의 이득을 볼 수 있습니다. #define을 활용하는 예를 몇 가지 설명하려고 합니다. 우선 팁을 설명하기 전에 간단하게 ‘##’ 과 “#’ 에 대해 살펴보고 가겠습니다. (샘플소스는 MSDN 에서 가져왔습니다) 1. ‘##’ - Token-Pasting Operator (##): 분리되어 있는 2개의 토큰을 하나로 뭉쳐주는 역할을 합니다. #define paster( n ) printf( "token" #n " = %d", token##n ) 라고 할 때 아래와 같은 코딩은 다음과 같이 풀이되어 결국 ‘token9 = 9’ 가 화면에 표시되게 됩니다. printf( "token" "9" " = %d"..

컴퓨터공학 기초/C.C++

#define 매크로 예제

#define ABS(a)(((a) < (0))?-(a):(a))#define SWAP(a, b)(a)^=(b)^=(a)^=(b)#define LIMIT(val, l, h)((val)Release(); x = NULL;#define SAFE_DELTE_OBJECT(x) if(x) DeleteObject(x); #define IS_ARRAY_ACCESS(var, maxval) (0

컴퓨터공학 기초/C.C++

코드 실행 시간 측정 방법 정리

이번에 알아보는 것은 Visual C++에서 시간을 측정하는 방법입니다. Visual C++에서 시간을 측정하는 방법은 여러 가지가 있는데 . ANSI C의 함수를 이용하는 방법부터 윈도우 API 함수를 이용하는 방법까지 다양합니다. 그리고, 각각의 방법을 사용하기 위해서 함수에 따라 적절히 헤더를 Include 해줘야 하기도 합니다. 다음은 DEVPIA와 MSDN 을 통해서 찾은 여러 가지 시간 측정하는 방법입니다. 여러 님들이 올리신 글들을 제가 한번 정리해 본 것이구요, 소스를 직접 테스트 해보기도 하고 수정을 하기도 했습니다. 그리고 각각의 방법들은 형태는 다르지만 모두 공통점이 있습니다. 바로 실행 시간을 측정하기 위해서 원하는 루틴의 시작점과 종료점에서 시간 측정과 관련하는 함수를 부른다는 겁..

컴퓨터공학 기초/C.C++

const_cast, static_cast, reinterpret_cast, dynamic_cast

const_castconst로 선언된 상수를 일반변수로 변환하는데 사용된다. volatile를 변환시키는데도 쓰인다 static_castc캐스팅과 비슷한 기본적인 캐스팅 연산자로 실수형, 정수형, 열거형등 기본적인 형변환을 할때 사용된다const_cast와 달리 일반변수를 상수로 바꿀수있지만 상수를 일반변수로 바꾸진못한다c캐스팅과의 차이점은 타입체크를 run-time으로 하지않고 compile-time에 정적으로 수행한다 reinterpret_cast어떠한 정수와 포인터 타입간에도 변환이 가능한 강력한 형변환이다하지만 기본적인 캐스팅개념에서 벗어나 강제로 바꿔 매우 불안정하기 때문에 쓰려면 위험을 감수해야한다 dynamic_cast상속관계에있는 클래스간의 형변환을 할때 사용한다형변환에 문제가없는지 안전검..

컴퓨터공학 기초/C.C++

set_union 알고리즘 STL set에서 사용하기

STL에 set을 가만 보면 우리가 원하는 연산이 없습니다. 합집합, 교집합, 차집합 연산이 바로 그것이죠 그런데 사실 그러한 연산들은 STL내에 알고리즘 형태로 어떤 컨테이너(예.벡터)에서도 사용할 수 있도록 제네릭하게 제공되고 있습니다. set a; set b; set c; a.insert("abc"); a.insert("def"); b.insert("abc"); b.insert("123"); set_union(s.begin(), s.end(), b.begin(), b.end(), inserter(c, c.begin())); for(set::iterator it = c.begin(); it != c.end(); it++) { cout

컴퓨터공학 기초/C.C++

STL의 string 클래스에 대한 토큰 처리 클래스 separtor

//Separator.h#ifndef __SEPARATOR_H#define __SEPARATOR_H#include #include class Separator{public: // constructor and destructor Separator(const std::string& str = "", const char delimiter = ':'); Separator(const std::string& str, const std::string& delimiter); virtual ~Separator(); // operator overloading std::string& operator[] (int index); const std::string& operator[] (int..