#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이라는 이름으로 저장한다.