정글에서 온 개발자
VSC에서 C 코딩 빨간줄 없애기 (feat. pintos project3) 본문
해결하려는 문제
- #ifdef VM 블럭 아래에서 코딩을 해야 하는데, 해당 코드가 음영처리 된다.
- 아래와 같이 정의되어 있는 속성을 써도 빨간줄도 뜬다.
- #ifdef VM 안에서 정의된 함수들은 자동 완성이 안된다.
문제의 원인
- Makefile가 돌아갈때는 알아서 설정되는 define 값들이 자동으로 설정된다.
- Makefile을 돌리기 전 코딩하는 상황에서는 VM이 define되지 않았기 때문에 아래와 같은 문제가 생긴다.
접근
- 그럼 VM을 define해주면 되지 않을까?
- 가장 먼저 생각나는 방법은 파일에 직접 #define VM을 해주는 방법이다. 실제로 잘 작동한다.
- 하지만 이 방법은 코드 자체를 조정하는 방법으로, VM을 끄고 싶을 때 해당 코드로 가서 일일히 꺼야 하는 단점이 있다.
- #define VM이 정의된 파일을 include하지 않는 파일에는 적용이 안 된다.
해결방법 - Intellisense 설정
- VSC는 많은 기능들을 설정을 통해 커스텀할 수 있었다는 사실을 알고 있었다.
- 코드의 자동완성 기능, 빨간줄 긋기, 음영처리 등은 Intellisense라는 기능이 담당한다.
- 해당 기능을 설정하면 될 것 같다.
- 검색 결과 아래와 같은 셋팅을 하면 해결된다.
{
"configurations": [
{
"name": "VM 모드",
"defines": ["USERPROG","VM","FILESYS"], // 이 부분에 원하는 매크로를 추가
"includePath": [
"${workspaceFolder}/**"
]
// 기타 다른 설정들...
}
],
"version": 4
}
- workspaceFolder 루트에 .vscode 폴더를 만들고 위 코드를 c_app_properties.json이라는 이름으로 저장한다.
- 이후 음영이 사라지는 것을 확인할 수 있다.
'정리' 카테고리의 다른 글
Spring 게시판 Skeleton 코드 (1) | 2024.01.05 |
---|---|
Spring 큰 그림 그려보기 (1) | 2024.01.05 |
[pintOS]-Priority Inversion, Multiple, Nested 정리 (1) | 2023.12.05 |
맵에 리스트 씌우기 귀찮음. 파이썬 * 연산자(Star Expression) (0) | 2023.11.01 |
이거 혹시 DP로 풀 수 있는 문제인가? (0) | 2023.11.01 |