안녕하세요? 강의를 듣다가 의문이 생겨 글을 남깁니다.
1. CS50 강의의 1) C 기초에서 CS50 Sandbox를 이용해서 프로그램을 진행하는 게 나오는데
#include <stdio.h>로 함수가 어디에 선언되어 있는지 지정파일을 써줄 때 그 지정파일에 따라서 <stdio.h>를 써주는 지와 만약 그렇다면 함수가 stdio.h 등 어느 파일에 있는 지 path는 어떻게 알 수 있습니까?
2. CS50 강의의 1) C 기초에서 CS50 Sandbox를 이용해서 프로그램을 진행하는 게 나오는데
코드를 쓴 파일명이 'hello.c이고 터미널에 'clang hello.c'라는 명령으로 컴파일을 진행하면 a.out이라는 파일이 나오게 되는데 hello.c는 영어와 같은 순수 텍스트로 기반되어 있는 것이라 2진법을 사용하는 컴퓨터가 이해하지 못해 컴파일을 하면 a.out이라는 파일을 output해서 컴퓨터가 이해할 수 있는 2진법적인 파일을 만든다고 이해했는데 제가 이해한 내용이 맞는지 그리고 다른 책을 보았을 때 C언어를 visual stdio code로도 IDE로 사용을 했는데 visual stdio code에서도 동일하게 코드와 컴퓨터가 이해할 수 있는 2진법으로 되는 파일이 따로 존재하는지 아니면 CS50 Sandbox의 특징으로 CS50 Sandbox에 국한되는 내용인지 알고 싶습니다.
그리고 만약에 CS50 Sandbox에 국한된 것이라면 visual stdio code에서는 어떠한 원리로 이 과정을 생략했는지 알고 싶습니다.
감사합니다. ^^
comment
안녕하세요 SEAN코치입니다.
저도 그 과정에 대해서 어렴풋하게만 알고있어서 약간의 구글링을 해보는 시간을 가졌습니다. 좋은 질문 감사합니다. 이 과정은 어떤 컴파일러를 사용하느냐에 따라 다르겠지만 j69230 부스터님의 환경은 VScode인듯하여 설명해드리겠습니다. vscode에서 C,C++ 언어를 사용할 때 대개 MinGW Compiler를 사용하실 것으로 생각합니다.
그래서 빌드하실땐 gcc or g++ [소스파일 이름]을 치셨거나 이 과정을 생략하기위해 tasks.json파일을 따로 두셨을 수도 있습니다.
그 과정을 보면 C:\\MinGW\\bin\\gcc.exe 를 사용해서 빌드를 하게되거나 g++.exe를 사용해서 빌드를 하게됩니다.
일반적인 유저가 object를 이용할 일은 많이 없기에 중간과정을 사용자에게 생략하고 최종output인 a.out(Linux일 경우) 혹은 a.exe(window일 경우)로 컴파일러가 알아서 최종 아웃풋만을 내보내게 작업하게 됩니다. 강제로 object파일을 보고싶으시다면 별도 커맨드가 있는것으로 알고있습니다.
질문에 대해서 답을 해드리게 되면
1. #include <stdio.h>는 어디있나요 ? 는 개개인 환경마다 다르나 stdio.h에 마우스 커서를 올리시고 Ctrl+좌클릭 하시면 stdio.h파일이 vscode에 열리게 될텐데, 그 파일의 경로를 확인해주시기 바랍니다. 저같은 경우
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h 로 되어있는듯합니다.
2. vscode또한 .exe파일을 생성하며 이 내용은 모든 IDE가 동일할 것으로 생각합니다.
생략되지 않습니다 ^^
이해가 되지 않는부분은 질문 추가로 남겨주시고, 혹여나 더 궁금하신게 있으시다면 C/C++ 빌드과정을 구글링 해보시는것을 추천드립니다. 유튜브도 설명 잘 되어있으니 유튜브 설명또한 추천드립니다.
감사합니다.
SEAN코치 드림