본문 바로가기

Programming/C language

srand 마이크로 시간대로 뽑아내기 본 글은 퍼온 글입니다. 아래 소스는 리눅스에서만 작동하니 그 점을 숙지해야 합니다. srand(time())가 1초마다 값이 바뀌다 보니 랜덤 값이 항상 일정한데 그 점을 보안하기 위한 함수 입니다. 아래 글은 퍼온 글이고 윈도우 모드에서 랜덤값을 주는 방법은 더 아래에 있습니다. 요즘 동아리에서 C 스터디를 하고 있습니다. 리눅스 프로그래밍, 윈도우즈 프로그래밍, 루트킷 탐지 프로그램 프로젝트를 하기 위한 선행학습이지요. 복습도 되구요. 우선, 로또 게임 시뮬레이션을 만들었는데, 주석을 포함하여 217줄이 나오더군요. 그 코드 중에서 번호를 무작위로 섞는 함수 부분에 대해 얘기하고자 합니다. 자, 그러면 코드부터 볼까요? /* === FUNCTION ============================.. 더보기
restrict 한정자(qualifier) in C Type Qualifiers C언어에서 C89 표준에서는 한정자가 contst, volatile 이 두가지가 있었다. C99에서는 세 번째 타임으로 restrict가 추가 되었다. 이 한정자들은 lvalue를 통해 객체를 접근할 때 컴파일러가 전제 조건을 결정한다. Const 예약어는 문법은 C++에도 이미 적용되어 있다. 이 개념은 다른 언어에도 나타나있다. volatile과 restrict는 C언어에서 발견되었다. 그리고 이 둘 다 const 와 같은 문장 구성법을 같는다. 한정자의 형(type)은 최적화를 통해 더 많은 제어적 요소를 제공하기 위해 소개 되었다. 몇몇 중요 최적화 기술들은 cacheing을 토대로 한다. 특정 상황에서 컴파일러는 그 지역으로 부터 가장 마지막에 엑세스된 값을 기억하고.. 더보기
죽여주는 공짜 씨(C) 언어 툴 DreamSpark is simple; it's all about giving students Microsoft professional-level developer and designer tools at no charge so you can chase your dreams and create the next big breakthrough in technology - or just get a head start on your career. 해당사이트가 위치하는 곳 https://www.dreamspark.com/ 마이크로소프트가 학생들을 위해서 위의 툴들을 모두 공짜로 내 놓았다 -0- 가입해서 시디키만 받으면 된다 -0-;;; 물론 회사에 취업해서 회사에서 저 비싼 것들을 사용 안하면 끝장나지만....... 더보기
C언어에서 디버깅하는 요령 만드는 디버깅 툴 디버깅을 할 때 가장 많이 쓰게 되는 툴은 무엇일까요? 아이러니하게도, 디버거가 아닙니다. 사실 툴이라고 하기도 좀 뭐하죠. 사람들이 디버깅할 때 가장 많이 사용하는 도구는, printf입니다. (Java라면 System.out.println이나 System.err.println쯤 되겠군요. C++이라면 cout이나 cerr가 되겠습니다.) 프로그램을 디버깅할 때 '프로그램의 상태를 화면에 출력하는' 일을 가장 많이 하게 된다는 뜻이죠. 하지만 printf를 무작정 프로그램 코드 안에 삽입하다보면, 나중에 삽질을 하게 됩니다. 어떤 삽질일까요? 네, 맞습니다. 나중에 프로그램 개발을 완료하고 시스템을 패키지화 해서 릴리즈 할 때가 되면, 그 모든 'printf' 문들을 전부 코드에서 지.. 더보기
VC++ 6.0을 쓰지 말아야하는 이유 VC++ 6.0을 쓰지 말아야하는 이유 트랙백: Visual Studio 6.0를 계속 쓸까? 아니면 Visual Studio 2008로 바꿔? 2008년 3월인 지금까지도 여전히 많은 프로젝트들이 10년 전에 출시된 VC++ 6.0으로 개발하고 있다는 사실이 다소 놀랍고 충격적이기까지 하다. 많은 분들이 토를 단다. 그런데 직접 십만 라인의 VC6 프로젝트를 2003년,VS 2003으로 이전한 경험이 있는 나로서는 그저 게을러서, 귀찮아서 라는 변명으로 밖에 들리지 않는다. 정말로 VC++ 6.0을 써야만 하는 절대절명의 이유가 있는지 정말 궁금하다. 왜 VC++ 6.0을 쓰지 말고 최소 VS 2005을 써야하는지 몇 가지만 써보자. (단, 이 이야기는 .NET을 사용하지 않는 Win32 기반의 C/C.. 더보기
C 최적화에 대한 의견 CPU MEM HDD 다시 CPU는 Instruction Mem C Data Memory ALU 전역변수: 파일 내에서 컴퓨알 후 메모리에 변수가 할당 된다. 초기화를 하지 않으면 호기화 명령어가 포함 되어져서 컴파일 되며 한 파일 내에서 어떤 함수든 접근 가능한 변수있다. 지역변수: 실행파일 내에서는 따로 영역이 잡혀 있지 않고 수행하는 과정에 CPU 레지스터에 바로 생성되서 속도가 전역 변수 보다 빠르다. Static: 그 변수를 다른 파일은 참고 할 수 없게 한다. 많은 파일이 겹치면 변수의 혼란이 오기 때문이다. Extern: 다른 파일에서 변수를 그대로 참고 할 수 있게 한다. 많은 파일을 이용해서 변수를 이용할 때 유용하다. 최적화 1. 배열보다는 상수형인 enum을 쓸 것: 데이터 메모리에 .. 더보기