안녕하세요 이번에 선생님의 강의를 보고 STM에 입문하려는 학생입니다. 임베디드에 완전 첫 입문이라 강의 설명중 헷갈리는게 있는데, 외부 클럭생성기가 8MHz의 주파수로 발생시킨다고 하셨는데, 시스템클럭을 168MHz로 설정하는 이유가 무엇인가요? 시스템 클럭이라는게 '최대 얼마까지의 클럭을 사용할 수 있는가' 에 대한 부분을 설정해주는 것인가요? 설명해주시면 정말 감사하겠습니다! 좋은강의 항상 감사합니다..
안녕하세요 잦은 질문을 드리네요 죄송합니다 궁금증이 많아서.. 선생님 강의 도중 setvbuf함수를 설명하실 때 _IONBF 이 모드를 인수로 넣으며 버퍼를 사용하지 않는다고 설명해주셨습니다. 이 설명을 듣고 떠오른건 한창 입출력 함수 알려주실 때 구글에 검색해서 찾아보다가 windows에서만 쓰이는 conio.h라이브러리에 _ getch(), _ getche()란 함수가 있었습니다. 그 함수가 버퍼를 통하지 않고 바로바로 입력과 동시에 처리를 했었는데 setvbuf함수가 그런 기능까지 구현할 수 있게 해주는 걸까요?
EOF란? 파일 대신 배열로 예를 들어보겠습니다. 예를들어 int a[3]이 있다고 가정을 하면 [0]번 인덱스부터 [2]번 인덱스 까지 있을 것 입니다. 파일을 읽는 것 처럼 배열로 읽는다고 바꿔 생각해보면 [0]번 인덱스를 읽을 땐 배열(파일)의 끝이 아니니 거짓(0)을 리턴합니다. 이렇게 [2]번 인덱스까지는 배열의 끝이 아니니 거짓(0)을 리턴 합니다. 그러다가 [3]번 인덱스를 읽었을 땐 배열의 끝 이므로 참(1)을 반환합니다. 이러한 개념을 파일로 적용 해봤을 때 이해한게 맞을까요?? 바이너리 파일과 확장자 요즘 소프트웨어가 다양하고 각 소프트웨어마다 확장자를 가지고 있습니다. 그리고 그 확장자를 불러오거나 저장할 수도 있습니다. 이번 강의를 보고 느낀점은 결국 확장자 라는 개념은 그 소프트웨어의 확장자 임을 나타내기 위함이고 각 소프트웨어의 확장자 파일을 읽어올 때나 저장(출력)할 때 소프트웨어 개발사가 미리 정해둔 어떤 데이터들의 형식, 구조, 순서 대로 저장을 하고. 그 저장된 확장자 파일을 불러올 때 앞 서 미리 정해둔 저장(출력) 틀에 따라 데이터들을 차례대로 가져와서 사용하는 개념일까요?
메모리를 내부적으로 64KB 와 4KB 로 관리하는 내역이 뭔지 좀 자세한 설명 부탁드릴 수 있는지요? 4KB 는 시스템에서 한번에 이동하는 즉 PAGE 단위라는 것은 알고 있는데 64KB 의 의미는 정확히 이해가 좀 안가서요.... 또한 4Kb 를 넘어가는 메모리 요청은 한페이지를 넘어가는데 이 경우 메모리의 주소 관리 등은 어떻게 이루어 지는지 궁금합니다. 아울러 한가지만 더 여쭤보면 만약 스레드를 생성하고 대기하기도 전에 스레드가 종료되어 버리면 WaitForSingleObject는 어떻게 동작하나요? 또한 SetEvent() 를 호출하여 이벤트가 signalled 상태로 변경하면 WaitForSingleObject() 를 호출하는 모든 스레드는몇번이고 Event 가 non-signalled 로 전환되기 전까지는 몇번이고 WaitForSingleObject() 를 통해 Event 를 받을 수 있게 되는 건가요?
자료형에 대한 이해 5:38에서 C언어 자료형에 대해 설명하는 도중 함수형에 대해 의문이 들어 글을 작성합니다. 이전에 설명해 주실때 자료형은 일정길이의 메모리에 저장된 정보를 해석 하는 것으로 설명해주셨습니다. 함수형은 메모리에 일정길이를 해석하는 개념이 있는지 또는 다른 해석법이 있는지 궁금합니다.
안녕하세요. 따배씨 학습 중 콘솔창 관련하여 문제가 생겨 질문드립니다. ctrl + f5 눌러 실행하는데 이미지와 같이 정상 실행은 되나 콘솔창이 화면에 뜨지 않습니다. 작업표시줄에 콘솔창이 실행된게 보이는데, 클릭하여도 화면에 나타나지 않습니다. 제가 문제 해결을 위해 시도해본 방법은 아래와 같습니다. 비주얼 스튜디오 다시 시작. 컴퓨터 다시 시작. 비주얼 스튜디오 삭제 후 재설치. 위와 같은 방법을 통해서도 문제가 해결되지 않았습니다. 어떤 시점에서 문제가 생겼는지는 저도 잘모르겠습니다. 전날 학습 후 다음 날 이어 학습하려는데 이와 같은 문제가 생겼습니다. 관련해서 도움 부탁드립니다. 사용환경 비주얼 스튜디오 커뮤니티 2022 Window 10 home
안녕하세요 강사님 섹션 11 기본 제어문 switch-case문 예제 scanf_s에서 중간에 1을 쓰셨던데 이유를 알 수 있을까요? 실제로 실행을 해보니 1을 넣으면 결과가 잘 나오는데 1을 넣지 않으면 실행창은 뜨는데 아래 실행 창 처럼 멈춰 있습니다. 각각의 이유를 알 수 있을까요? 오류코드도 뜨는데 무슨 말인지 잘 모르겠는데 알려주실 수 있나요? 오류 코드 감사합니다.
https://www.inflearn.com/questions/741606 링크의 질문의 답변에서 어느정도 설명을 해주셨는데 s_gets 함수가 NULL을 반환할 경우 break을 해주는거라고 하셨어요 그런데 s_gets 함수가 NULL을 반환하는 경우가 오류 말고는 없지 않나요? 어떤 문자를 입력하던 엔터를 입력하던 fgets 함수가 포인터는 반환하게 돼있잖아요 그렇다는건 역시 오류가 생겼을 경우 break을 하기 위해서 if 의 조건문으로 s_gets 함수의 반환값이 NULL인지 확인하는걸 추가해준 것 인가요? 항상 좋은 답변 감사합니다.
뒤의 포인터 강의를 듣고, 2차원 배열 기상청 정보 예제에서 함수를 통해 구현하려 하던 간단한 부분이 막혀서 질문드립니다. 헤더 파일에 있는 기능은 stdio.h랑 YEARS, MONTHS 에 상수 정의한 것 말고는 없습니다. 제 질문은 다름이 아니라 x86과 x64 에서 돌릴 때마다 생기는 오류와 포인터로 설정한 argument와의 관련성입니다. parameter에는 str[]을 세팅해두었으니, argument 역시 동일하게 세팅해야 하는 것은 의심의 여지가 없는 사실이지만, "배열은 그 자체가 하나의 주소이니까, 포인터로도 취급할 수 있지 않을까?" 라는 호기심에 리다이렉션한 str(dereferencing한 값이라 하나요?)을 parameter로 넣어보았습니다. 그 결과 x64에서 컴파일 성공(결과도 성공적), x86에서는 컴파일이 실패하였습니다. 그러나 아무리 고민해봐도, 정보를 저장하는 체계가 4바이트에서 8바이트로 바뀌었다고 해서 위 사진처럼 char밖에 자료형이 없는 경우에도 양상이 달라진다는 것이 이해가 되지 않습니다 ㅠㅠ. 도움 부탁드립니다..!
gets_s() 함수가 키보드 추상화 파일의 버퍼에서 null이 나올 때까지 문자열을 가져오는 함수잖아요. scanf_s() 함수를 통해 5\n 이 저장되었다고 했을 때, %*c를 통해 \n을 제거하지 않으면 gets_s() 함수는 \n이 들어있어서 입력을 중지하는 거라고 이해했습니다. 여기서 질문입니다. null이랑 \n 이랑 다르다고 알고 있는데 왜 null 이 나온 것처럼 gets_s() 함수가 수행되지 않는지 궁급합니다!! 감사합니다. (꾸벅)
안녕하세요, 멀티 쓰레딩 강의를 보고 궁금점이 생겨 질문드립니다. 물론 여기서 완벽히 이해하고 갈 예정은 아닙니다. 추후 cpp강의까지 연계하여 공부할 것이기 때문에 제가 이해한 개념이 맞는지 궁금하여 질문 드립니다. 멀티 쓰레딩이란? 프로그램에서 원래 한가지 일 밖에 못하는데 멀티 쓰레딩 이라는 개념으로 여러가지 일을 동시에 해주는 것이 맞을까요? 예를 들어서 계산기가 있고 계산기를 사용하여 답을 얻고자 하는 사람이 3명일 때 쓰레드가 하나 일 경우에는 한 사람씩 순서대로 계산기 사용해야 하지만 쓰레드가 3개일 경우엔 각 사람마다 각자의 계산기를 통해 동시에 계산할 수 있는 그런 느낌이려나요? 더 나아가서 실시간 서버와 통신하는 게임 같은 경우에도 많은 유저가 서버에게 요청하는데 쓰레드가 하나일 경우엔 이걸 하나씩 처리하지만, 멀티 쓰레딩을 사용하면 여러 개 처리하는 느낌일까요? 메인 쓰레드와 쓰레드 생성 강의에서 쓰레드라는 개념으로 보여주신 그림입니다. 위 그림을 통해 이해했던 개념이 프로그램에는 메인 쓰레드가 있고 메인 쓰레드가 처리해야 할 일이 많을 경우 자신을 복제하여 분신을 만들고(쓰레드 생성) 분신(쓰레드)에게 일을 할당하여 일을 시키고 프로그램이 끝나기 전 메인 쓰레드는 자신의 분신(쓰레드)과 다시 합체한다음 프로그램이 종료되는 느낌일까요? 이 과정에서 아직 분신(쓰레드)가 할당한 일을 하고 있다면 기달렸다가, 합체하고 종료되는 건가요? 멀티 쓰레딩의 큰 개념은 결국 하나? 강의 중 c언어 표준에는 멀티 쓰레딩이라는게 없어서 운영체제에서 제공하는 api을 통해서 멀티 쓰레딩을 할 수 있다고 하셨는데요, 그러시면서 윈도우에서 멀티 쓰레딩을 사용하는 방법과 gcc컴파일러에서 멀티 쓰레딩 사용하는 방법에 대해서 보여주셨는데 윈도우에서는 windows.h헤더파일과 쓰레드에 사용되는 전용 함수를 사용하셨고 gcc컴파일러에선 pthread.h헤더파일과 쓰레드에 사용되는 전용 함수를 사용하셔서 구현을 해주셨는데요 운영체제 api마다 c언어에서 멀티 쓰레드의 대한 제공하는 헤더파일과 함수, 문법과 표현법이 모두 달라서 이번 예제에서 조차 윈도우와 gcc컴파일러에서 작성한 방법이 달랐지만 결국 큰 틀은 쓰레드를 생성하고 쓰레드에게 할 일을 배정하고 프로그램이 끝나기 전 쓰레드들을 다시 하나로 합치는 이 과정은 어느 환경이든 다 똑같은 개념일까요? 여담으로 멀티 쓰레딩과 표준에 대하여 C언어 표준에는 멀티 쓰레딩이 없다고 하셔서 각 운영체제마다 다른 기술을 사용해서 구현해야 하는데 CPP언어 표준에는 멀티 쓰레딩이 있나요?? 항상 친절한 답변 남겨주셔서 감사합니다.