파이썬만 하다가 오랜만에 C 할랬더니 경로가 다 박살이 나서 

빌드부터 에러가 존나 뜨길래 그냥 다 갈아엎고 처음부터 공부하는 겸 다시 설정한다

구글링하면 설정이 다 제각각으로 돼서 gpt랑 함 

야매 주의

 

1.

"C:\Users\SAMSUNG\OneDrive\바탕 화면\2025 여름방학 코딩연습"

경로에다가 test.c 파일 생성해서 빌드업 시도

에러: C:\Users\SAMSUNG\OneDrive\���� ȭ��\2025 �������� �ڵ�����

(한글 깨짐)

-> 당연히 안됨. C는 파일 경로에 한글이나 띄어쓰기 쓰지 말 것. 

특히 OneDrive에 생성 지양하기

-> 로컬디스크 폴더에 2025_summer_vacation 폴더 생성 후 여기에만 파일 생성하기로 함

 

2. 

어찌저찌 하다가(우측 상단 debug file 버튼 눌러서) exe파일은 생겼는데 ctrl+shift+B로 빌드하려고 했으나 오류 발생

에러: ������ ��θ� ã�� �� �����ϴ�.

= 지정된 경로를 찾을 수 없습니다.

 

->파일 경로 문제.

.vscode 폴더 내 생성된 설정 json 파일 중 launch.json파일과 tasks.json파일의 경로가 달라서 생긴 문제

경로 문제 발생 시 launch 파일에서 건드려야 할 부분은 "program"과 "cwd"부분

launch.json의 "program" 경로가 "c:/2025_summer_vacation/build/Debug/outDebug"로 자동 설정되는 문제가 생겼는데 이건 마구잡이로 설치한 C 디버깅 확장 파일 때문에 vscode에서 자체적으로 설정한 경로임.

 

->launch.json 경로 변경

"program": "c:/2025_summer_vacation/test.exe"(절대경로)로 변경

"cwd": "c:/2025_summer_vacation"로 변경

또는

현재 열려있는 c 파일 기준으로 exe 경로를 찾는 방법

"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
"cwd": "${fileDirname}"

 

->tasks.json

"label"명과 launch.json의 "preLaunchTask" 명을 일치시키기(경로 일정하게)

 

이하 gpt 설명 

✅ preLaunchTask란?

간단히 말해서:

디버깅 실행(F5)을 누르기 전에 어떤 작업(task)을 먼저 수행할지 지정하는 옵션이야.

보통은:

  • 컴파일이 먼저 필요하고 →
  • 그다음 .exe를 디버깅해야 하니까 →
  • preLaunchTask는 **"빌드 먼저 하고 나서 실행해줘"**라고 VSCode에 알려주는 역할을 해.

🧠 왜 자동으로 preLaunchTask가 안 만들어질까?

✳️ VSCode의 기본 동작

  • VSCode는 launch.json을 자동 생성할 때, 유저가 어떤 task를 쓸지 추측하지 않아.
  • 왜냐면 task는 사람마다, 환경마다 다르니까:
    • g++, gcc, clang, make, cmake, 등등 전부 다 다르거든
  • 그래서 "이 사람은 알아서 task 지정하겠지~" 하고 안 넣고 놔두는 거야

👉 즉, launch.json을 자동으로 만들어줄 순 있지만,
“빌드에 뭘 쓸지”는 VSCode가 몰라서 preLaunchTask를 비워두는 거야.


📌 VSCode는 왜 버튼 누를 때 task.json은 만들어주는데 preLaunchTask는 안 넣어줄까?

그 이유는 두 가지야:

1. "디버그 ▶ 버튼" 누르면

  • 처음 실행할 때 "빌드 task 필요하겠지?" 하고 VSCode가 유추해서 tasks.json을 만들어줌
  • 하지만 이건 그냥 빌드용 task일 뿐이고, VSCode는 그걸 launch.json이랑 자동 연결은 안 해줌

2. launch.json이 "빌드 먼저 할게"라고 말하려면

  • 명시적으로 "preLaunchTask"를 써줘야 함
  • 그걸 네가 직접 지정해줘야 VSCode가 “아 이걸 먼저 실행하면 되는구나” 하고 안 헷갈림

 

그렇다네

 

 

3.

코드 실행 방법의 종류

(1) f5 -> 빌드+디버깅

원래는 launch.json 파일이 있어야 해당 파일 설정을 기반으로 디버깅이 진행되는데 

파일이 없어도 임시 기본값으로 디버깅 가능함(아마 확장 프로그램 때문인 것으로 추정됨)

여러 설정이 필요한 경우 launch.json파일을 따로 만들어서 설정 관리할 것

(2) ctrl+shift+B -> 빌드

tasks.json 파일 기반으로 작업 실행

빌드하려고 할 때 tasks.json파일 자동 생성, 어떻게 컴파일 할지 들어있음

tasks파일 없으면 이 방법으로 빌드 안됨

-> ctrl+shift+P 눌러서 Task:configure defult build task 선택해 임의로 task파일 생성

 

오류 뜰 때 해결방법: 

✅ 왜 Ctrl + Shift + B는 안 되는가?

Ctrl + Shift + B는 tasks.json의 "group": "build", "isDefault": true로 설정된 작업만 실행해.

근데 지금 네 launch.json 안에서 쓰는 "preLaunchTask": "build C file"은 있는데,
tasks.json 파일 자체가 없거나, "build C file"이라는 label이 없거나,

default build task가 설정 안 돼 있어서 Ctrl + Shift + B로는 동작 안 하는 거야.

 

 

(3) 우측 상단의 디버깅 버튼 -> 빌드+디버깅(f5와 같은 기능인 듯)

vscode 자체적으로 tasks.json 파일과 launch 파일 만들어주지만(상황에 따라 안만들어주는 것 같기도) 그 둘을 연결해주지는 않음

그래서 빌드는 되지만 디버깅이 안 될 가능성이 큼

 

4. 

지금 확장프로그램을 이것저것 지워놨더니 실행은 잘 되는데 설정 파일이 너무 간단해짐

모르겠다 난 개발하는게 아니니까 간단한게 좋은건가? 

암튼 이틀동안 머리 싸매고 공부를 해봤는데 결론은

- 확장 프로그램 아무거나 막 깔지 말자 

- 빌드랑 디버깅 할 때 순서 개무시하고 아무거나 막 누르지 말자

- 파일 경로를 애초부터 안 꼬이게 만들자

인듯...

지금 최종 설정한 바로는 launch.json 파일이 안만들어지고 .vscode 설정 폴더에 tasks.json만 있는 아주 간단한 형태인데 내가 작년에 자동 설정으로 코딩했을 때는 항상 launch파일이 있었어서 지금도 약간 불만이 있음

여기서 이제 설정 파일 수정하려면 vscode에서 자체 설정해야 하는데 내가 거기까지 해야 할까

 

근데 어쨌든 오류는 해결됐으니까 난 이제 손 떼고 문법 공부나 하러 간다!

혹시 검색어 타고 문제 해결하려고 들어온 분은 제 글 말고 전문가 글 보고 공부하세요 ㅎ

 

 

'Coding > C, C++' 카테고리의 다른 글

백준 #28278  (0) 2024.07.23
백준 #1436  (0) 2024.07.22
백준 #2231 (실패)  (0) 2024.07.17
백준 #2798  (0) 2024.07.15
백준 #1152  (0) 2024.07.10

왜안되노

#include <stdio.h>
#define SIZE 100
int main()
{
    int num, cnt, n;
    int m = 0;
    int list[SIZE];
    int size; 

    scanf("%d", &cnt);

    for (int i = 0; i < cnt; i++)
    {
        size = m;

        scanf("%d", &num);

        switch (num)
        {
        case 1: //스택에 n을 넣는다
            scanf("%d", &n);
            if (m < SIZE)
            {
                list[m] = n;
                m++;
            }
            break;
        case 2: //스택에 정수 있으면 맨위 빼고 출력, 없으면 -1 출력
            if (size > 0)
            {
                printf("%d\n", list[size-1]);
                m--;
            }
            else printf("%d\n", -1);
            break;
        case 3: //스택에 들어있는 정수 개수 출력 
            printf("%d\n", size);
            break;
        case 4: //스택이 비어있으면 1 아니면 0 출력
            if (size > 0) printf("%d\n", 0);
            else printf("%d\n", 1);
            break;
        case 5: //스택에 정수 있으면 맨위 출력, 없으면 -1 출력 
            if (size > 0) printf("%d\n", list[size-1]);
            else printf("%d\n", -1);
            break;
        default:
            break;
        }
    }
    return 0;
}

출력 잘되는데 왜틀렷

스택은 중요하니까 나중엔 구조체로 다시 해봐야겟다

아마 list 인덱스 접근에서 오류가 나는

'Coding > C, C++' 카테고리의 다른 글

[C] vscode 초기 경로 설정 공부  (0) 2025.07.16
백준 #1436  (0) 2024.07.22
백준 #2231 (실패)  (0) 2024.07.17
백준 #2798  (0) 2024.07.15
백준 #1152  (0) 2024.07.10

+ Recent posts