정글에서 온 개발자

VSC에서 C 코딩 빨간줄 없애기 (feat. pintos project3) 본문

정리

VSC에서 C 코딩 빨간줄 없애기 (feat. pintos project3)

dev-diver 2023. 12. 28. 08:08

해결하려는 문제

  • #ifdef VM 블럭 아래에서 코딩을 해야 하는데, 해당 코드가 음영처리 된다.
  • 아래와 같이 정의되어 있는 속성을 써도 빨간줄도 뜬다.
  • #ifdef VM 안에서 정의된 함수들은 자동 완성이 안된다.

#ifdef VM 블록 안의 음영처리
#ifdef VM에서 설정한 spt가 정의되지 않은 것처럼 보임

문제의 원인

  • Makefile가 돌아갈때는 알아서 설정되는 define 값들이 자동으로 설정된다.
  • Makefile을 돌리기 전 코딩하는 상황에서는 VM이 define되지 않았기 때문에 아래와 같은 문제가 생긴다.

접근

  • 그럼 VM을 define해주면 되지 않을까?
  • 가장 먼저 생각나는 방법은 파일에 직접 #define VM을 해주는 방법이다. 실제로 잘 작동한다.

아래 #ifdef블록의 음영이 사라졌다.

  • 하지만 이 방법은 코드 자체를 조정하는 방법으로, VM을 끄고 싶을 때 해당 코드로 가서 일일히 꺼야 하는 단점이 있다.
  • #define VM이 정의된 파일을 include하지 않는 파일에는 적용이 안 된다.

해결방법 - Intellisense 설정

  • VSC는 많은 기능들을 설정을 통해 커스텀할 수 있었다는 사실을 알고 있었다.
  • 코드의 자동완성 기능, 빨간줄 긋기, 음영처리 등은 Intellisense라는 기능이 담당한다.
  • 해당 기능을 설정하면 될 것 같다.
  • 검색 결과 아래와 같은 셋팅을 하면 해결된다.
{
    "configurations": [
        {
            "name": "VM 모드",
            "defines": ["USERPROG","VM","FILESYS"],  // 이 부분에 원하는 매크로를 추가
            "includePath": [
                "${workspaceFolder}/**"
            ]
            // 기타 다른 설정들...
        }
    ],
    "version": 4
}
  • workspaceFolder 루트에 .vscode 폴더를 만들고 위 코드를 c_app_properties.json이라는 이름으로 저장한다.
  • 이후 음영이 사라지는 것을 확인할 수 있다.