본문으로 바로가기

파일의 IT 블로그

프로그래밍

해당되는 글 137
  • thumbnail
    프로그래밍/Talk

    [C/C++] 연결리스트 구현은 되도록 라이브러리(인터넷)를 사용합시다

    혹시 본인이 과제로 연결 리스트를 구현할일이 생겼다? 그러면 본인이 정말 머리가 잘돌아가는 유능한 프로그래머가 아니라면.. 되도록 인터넷이나 라이브러리를 참고해서 구현하는것을 추천드립니다. (사실 참고하라곤 했는데 복붙하고 유사도 검사 피하기 위해 변수 이름 정도만 바꾸는게 편합니다.) 아니 직접 구현하는게 자기 실력느는데 무슨 소리냐? 네 이것도 맞습니다.. 당연히 자기가 직접 구현해봐야 실력이 늘지요 ㅎㅎ; 근데 단일 연결리스트는 직접 구현한다고 쳐도, 이중 연결 리스트는 정말 제대로 생각했는데도 C/C++ 동적할당 & 포인터 특성상 NULL 포인터를 참조한다던가, 잠정적으로 어디선가 문제가 터져서 공포의 Segmentation Fault(메모리 참조 오류) 를 만날 가능성이 높습니다. 그러므로 되도..
  • thumbnail
    프로그래밍/Talk

    [C] 쓰레드 스케줄러 과제 구현 90% -> 50%...

    pthread 계열의 Thread 함수를 직접 구현하고, 스케줄러까지 구현해서 쓰레드를 Round Robin 형태로 스케줄링 실행하는 과제를 진행하고 있습니다. 저번에는 비슷하게 시스템 콜로 Tree를 구현했었는데 이번건 진짜 말도 안되게 어렵네요. 머리가 아파집니다. 분명 다 제대로 구현했다고 생각했는데 thread_join() 구현하는 부분에서 계속 프로그램이 터지네요 ;; 과제하라고 테스트 케이스를 던져줬는데 계속 내용도 바뀌고 출력이 어떻게 나와야 한다는 것도 없으니 제대로 진행하고 있는지도 모르겠고 짜증만 납니다 ㅡㅡ. C로 연결리스트도 만들고, 컨텍스트 스위칭도 구현해보고, clone() 으로 쓰레드도 생성해보고 사실 초반에 잘 돌아갈때까진 나름 즐거웠는데 join 에서 막히니 시간은 계속 뺏..
  • thumbnail
    프로그래밍/C++

    [Arduino/C++] 시리얼 모니터 데이터 공백구분으로 입력받기, 명령어 처리

    // 생성자의 여러번 호출을 막기 위해 전역 변수로 String 변수 2개를 호출한다. String input; String args; void setup() { Serial.begin(9600); } void loop() { //시리얼 데이터가 들어왔을때 (버퍼에 내용이 채워졌을때) 작업 if(Serial.available() > 0) { input = Serial.readStringUntil('\n'); //엔터까지 입력받기 Serial.println("INPUT : " + input); for(int i = 0; i < input.length(); i++ ) { char c = input[i]; //공백이 아닌경우만 문자열에 결합시킨다. (담아준다.) if(c != ' ') { args.concat..
  • thumbnail
    프로그래밍/C++

    [C++] 연산자 오버로딩 (Operator Overloading)

    * 본 글을 읽기 전에 미리 구조체와 C++의 Class 개념에 대해 미리 알고 학습을 하는 것을 권장드립니다. 일반적으로 C언어에서 사용하는 +, -, ==, [] 와 같은 기본 연산자들은 모두 C언어에서 기본적으로 정의 되어 있는 데이터 타입 (int, double, char 등) 에서만 사용 가능한 연산이였기에, 사용자가 정의해서 만든 타입인 구조체로 만든 구조체 변수의 경우 이러한 연산자를 적용할 수 없었습니다. #include struct point{ int x; int y; }; int main(){ struct point pos1 = {10,20}; struct point pos2 = {20,40}; if(pos1 == pos2){ //오류 발생 printf("same"); } return ..
  • thumbnail
    프로그래밍/VSCode

    [VSCode] 점유율 100% 터미널, 에디터 렉 오류 rg.exe 해결

    VSCode에서 코딩 진행중인데 터미널하고 에디터에서 정체 불명의 불쾌한 렉이 발생했습니다. 확인해보니깐 VSCode에서 rg.exe가 계속 실행되고 있더라구요. 에디터에서 코드 수정할때까진 괜찮은데, VSCode 터미널에서 gcc나 g++ 로 컴파일 해서 실행하면 저렇게 rg.exe가 무한 실행되며 문제가 발생합니다 -.- rg.exe가 뭔지 확인해보니 폴더에서 텍스트를 검색할 때 쓰는 ripgrep 이라는 아주 빠른 도구라고 합니다. 렌더링 에서 GPU 가속 끄는것도 안먹히고, VSCode 재설치해도 안되길레 혹시 확장 프로그램이 문제인가? 싶어서 최근에 설치한 C-mantic 이라는걸 삭제하니깐 해결이 되네요. VSCode에서는 C++ 코딩할때 VS처럼 헤더파일에 class 선언해두고, 멤버 함수 ..
  • thumbnail
    프로그래밍/Etc

    VS 2022 C/C++ Compiler보다 더 깐깐한 gcc/g++ Compiler!

    VS 2022 C++ 컴파일러에선 오류나 경고가 하나도 잡히지 않는데, 같은 코드를 VSCode에서 g++로 빌드해서 실행해보니 오류, 경고 작렬이네요. 개인적인 감상으론 사실 제대로 깐깐하게 컴파일 하는건 gcc나 g++가 VS 컴파일러보다 한수위인거 같고, VS 컴파일러는 Dev C++ 컴파일러보다 한 수 위인거 같습니다. 즉 정리하자면 gcc/g++ compiler > VS C/C++ compiler > Dev C++ 컴파일러 순으로 순위(?)가 매겨질 수 있겠네요. 사실 저는 gcc나 g++ 컴파일러를 선호하는 편인데 아무래도 GNU 프로젝트 시절부터 내려온, C 표준을 잘 지키는 근본 컴파일러기도 하고, UNIX 계열 운영체제 / 윈도우 가리지 않고 사용할 수 있다보니 좋아합니다. Visual ..
  • thumbnail
    프로그래밍/Talk

    [C++] infix -> postfix 수식 변환 & 계산기 구현

    * 해당 글은 구현을 단순히 기록차 남겨놓은 후기 글 입니다 강의글이 아니므로 따로 자세한 설명을 넣진 않습니다. 자세한 구현 방식은 나중에 자료구조 탭을 추가하여 제대로 작성할 예정입니다. C++ 에서 infix 수식 (중위 표기법) 을 받아서 postfix 수식 (후위 표기법) 으로 변환 후 그 postfix 수식에 대한 값을 계산해 결과값을 출력하는 기능을 구현했습니다. 뭐 이번에도 과제때문에 억지로 구현한거긴 합니다. 사실 프로그래밍을 하면서 일반적으로 리터럴에 적는 여러가지 수식들은 자연스럽게 컴퓨터가 읽어내 계산할 수 있도록 컴파일러가 처리해줍니다만, 실제로 수식 문자열을 입력받아서 계산하는 기능은 생각보다 굉장히 어려운 기능입니다. (당장 수식을 계산하는 방법을 머리 속으로 생각해보면, 정수..
  • thumbnail
    프로그래밍/C++

    [C++] 모든 인자값을 레퍼런스로 넘겨야 성능상 유리할까?

    일반적으로 C++에서 레퍼런스를 인자로 받으면, 참조하는 타입의 모든것을 복사하는게 아닌 주소 한번을 넘김으로써 원본에 접근할 수 있어, 포인터 처럼 성능상의 이점을 취할 수 있습니다. 그러면 생각해낸게 "아 그럼 모든 인자는 레퍼런스로 받아야 성능이 좋을까?" 라는 생각이 문뜩들었습니다. 매우 큰 객체들은 (Struct, Class 변수) 레퍼런스로 받는게 당연히 빠를 것이나 그럼 int, double 같은 기본 값 타입들도 Call by Value가 아닌 Call by reference 로 받으면 빠르겠구나! 라고 대충 추정해보았습니다. 일단 레퍼런스로 받으면 빠르다라고 배웠으니깐요.. 그런데 찾아보니깐 아니더라구요.. 이에 관련하여 좋은 글을 작성해주신 분이 있어서 관련 링크를 첨부합니다. http..
    이모티콘창 닫기
    울음
    안녕
    감사해요
    당황
    피폐

    이모티콘을 클릭하면 댓글창에 입력됩니다.