본문 바로가기

반응형

Programming/C & C++

C99, C11에서 변경된 점 C99에 추가되거나 변경된 기능C99는 다음과 같은 기능들을 포함하고 있다. 이들 중 일부는 이미 일부 컴파일러에 확장 기능으로서 포함된 적이 있다. 인라인 함수의 도입변수의 선언은 더 이상 파일 범위나 복합 명령어의 시작에서만 할 필요가 없다.long long int, 선택적인 확장 정수형, 명시적 불린 자료형, 그리고 복소수를 나타내기 위한 complex 자료형 등 새로운 자료형 도입가변 길이 배열(VLA: variable-length array)float read_and_process(int n){ float vals[n]; for (int i = 0; i < n; i++) vals[i] = read_val(); return process(vals, n);}BCPL이나 C++와 같은 //로 시작하는.. 더보기
ssize_t, size_t 그리고 pid_t ssize_t, size_t, pid_t 는 고전적인(primitive) 자료형이라 한다. 일반적으로 헤더에 선언되어 있는데, 사실 C의 typedef 선언을 통해서 정의되어 있다. 즉 새롭게 등장한 것이 아니라, 잘 알고 있는 int, float, long과 같은 기본 자료형을 가지고, 이름만 바꾸어 정의해 놓은 것이다. 이러한 자료형들은 꽤 오래 전부터 존재하고 있엇다. 그렇다면 도대체 왜 이러한 것을 정의해 놓고 사용하는 것일까?? int, short, float 라고 하면 사용하기 편할 텐데... 지금은 int가 32비트라고 한다. 보편적으로 사용되는 운영체제와 컴퓨터가 32비트이기 때문이다. 과거 16비트 시설에는 int가 16비트였고 곧 64비트 시대가 도래 할 것이다. 즉, 시스템에 따라서 .. 더보기
C 와 C++에서 구조체 정의의 차이점 C 와 C++에서 구조체 정의의 차이점 typedef struct { int data; int text;} S1;// S1을 자료구조(typedef) 구조체로 정의한다. C와 C++에서 사용가능하다. struct S2 { int data; int text;};// S2를 자료구조(typedef) 구조체로 정의한다. 이것은 C++에서만 사용하며, C에서는 에러가 발생한다. 위의 S1, S2의 방식으로 자료구조형으로 구조체를 정의한 경우 다음과 같이 변수를 선언해 줘야 한다. struct S1 AAA;struct S1 BBB, CCC;struct { int data; int text;} S3;// 구조체 변수 S3를 선언한다.// S3는 위의 S1, S2와는 완전히 다르다.// S3는 자료구조(typedef.. 더보기
Application development on AIX http://www-903.ibm.com/kr/techinfo/pseries/tech/tech_16.html김세희 kseh@kr.ibm.com어떤 UNIX시스템에서도 원시코드로부터 프로그램을 개발하여 이것을 실행할 수 있도록 실행 가능한 프로그램을 만들고 프로그램의 오류를 수정해 나가는 과정은 비슷하다고 할 수 있다. AIX에서는 일반적으로 사용하는 Open Source Environment가 아닌 AIX고유의 개발툴을 사용하므로, AIX에서 개발이나 포팅 작업을 하려는 사용자는 각각의 개발툴의 이름을 숙지하고 명령어 사용법을 알아두어야 할 필요가 있다. 그러나 전혀 다른 환경은 아니므로, 만약 Open Source Environment에 익숙한 개발자라면 AIX의 개발환경에 익숙해지는데 그다지 오랜 시.. 더보기
함수와 매크로에 대한 정리 아래의 함수들은 FILE 구조(structure) 내부의 필요한 정보에 접근하기 위해서 솔라리스에서 최초로 추가된 함수들이며, glibc에서도 사용이 가능하다. 참고: 번역이 잘못되었을 수도 있으며... 저의 능력이 안되므로 이해해 주시길... __fbufsize 사용법#include<stdio.h>#include<stdio_ext.h>size_t __fbufsize (FILE *stream) 설명버퍼의 크기를 알아내고, 현재 버퍼가 얼마나 사용되고 있는지 알려준다. 되돌림 값주어진 스트림에서 사용된 스트림 버퍼의 크기, 이 값을 이용하여 스트림의 사용을 최적화 할 수 있다. __flbf 사용법#include<stdio.h>#include<stdio_ext.h>int __flbf (FILE *stream.. 더보기
Linux Thread Programming에 대해서... 1. 약간의 이론 1.1 소개LinuxThreads는 다중 쓰레드 프로그래밍을 위한 리눅스 라이브러리이다. LinuxThreads는 커널 수준의 쓰레드를 제공한다; 쓰레드들은 clone() 시스템콜에 의해 만들어지고 모든 스케줄링은 커널에서 이루어진다. Posix 1003.1c API를 구현하였고 커널 2.0.0이상의 커널과 적절한 C 라이브러리를 가지고 있는 어떠한 리눅스 시스템에 동작한다. 1.2 쓰레드란 무엇인가?쓰레드는 프로그램을 통한 제어의 순차적인 흐름이다. 그래서 다중 쓰레드 프로그래밍은 여러 제어 쓰레드가 한 프로그램에서 동시에 수행하는 병렬 프로그래밍의 한 형태이다.다중 쓰레드 프로그래밍은 모든 쓰레드가 같은 메모리 공간을 (그리고 파일 디스크립터와 같은 일부 시스템 자원들을) 공유하는 .. 더보기
The Joel Test: 나은 코딩을 위한 12단계 글 : Joel Spolsky번역 : B.K. Chung 정봉겸감수 : Jang Han Goo 구장한2000년 8월 9일 SEMA에 대해서 들어보신 적이 있습니까? 소프트웨어 팀이 얼마나 잘하는지를 재는 나름대로 복잡한 시스템입니다. 앗, 아니! 그 링크를 누르지 마세요. SEMA를 "이해"만 하는데 아마 6년정도가 걸릴것입니다. 그래서 소프트웨어 팀이 얼마나 좋은지 등급을 매길 수 있는 - 좀 무책임하고 되는대로의 - 자체적인 버젼의 테스트를 만들었습니다. 이 테스트의 장점은 3분정도밖에 걸리지 않는다는 것입니다. 절약되는 시간으로 의대에 가서 공부할 수도 있을 것입니다. The Joel TestSource Control(소스 컨트롤)을 사용하십니까?한번에 빌드를 만들어낼 수 있습니까?daily bui.. 더보기
GCC의 컴파일 옵션에 관해서... gcc는 예전에는 GNU C Compiler의 약자였으나 지금은 GNU Compiler Collection의 약자로 다양한(?) 언어의 컴파일러들의 집합체이다. gcc는 한마디로 GNU에서 개발된 ANSI C 표준을 따르는 C 언어 컴파일러라고 말할 수 있다. gcc는 ANSI C 표준에 따르기는 하지만 ANSI C 표준에는 없는 여러 가지 확장 기능이 있다. 또한 gcc는 통합개발환경(IDE)을 가지고 있지 않은 command line 컴파일러이다. 옛날 Turbo-C를 주로 사용해 보셨던 분들은 tcc.exe와 비슷하다고 생각하면 된다. (*) -v 옵션현재 사용되고 있는 gcc의 버전을 나타내는 옵션이다. 특정 소프트웨어 패키지를 컴파일하기 위해 어느 버전 이상의 gcc를 쓰도록 권장하는 경우가 있.. 더보기

반응형