SW 개발 공부/실수 기록

[Stm32 Project] header 파일에서 선언한 변수가 .c파일 내에서 찾을 수 없는 경우

Maison 2024. 11. 11. 17:38

* 문제상황

 

- main.h 파일에 enum으로 변수를 선언 후, main.c 파일에서 해당 변수를 참조하였다.

- 디버그시 해당 변수값이 정상적으로 인가되지만, 해당 변수의 Declaration을 확인시 "Could not find symbol"이라는 에러 메시지와 함께 정의를 찾을 수 없었다.

 

 

* 원인

 

< 헤더 파일이 변경되었으나 IDE가 인덱싱을 갱신하지 못한 경우 >

 

 헤더파일이 업데이트되었으나, IDE가 새로 인덱싱하지 못해 최신상태를 반영하지 못하는 경우이다. 인덱스 문제로 인해 변수 선언이 인식되지 않을 수 있다.

보통은 Clean후 Build를 진행시 인덱싱이 갱신되지만 해당 작업을 수행했음에도 갱신되지 않는다면 인덱싱 재빌드를 수행해야 한다.

 

* 해결 방법

 - 인덱싱 재빌드를 실행한다. (Project 메뉴 => "C/C++ Index" => "Rebuild" 클릭)

 

* 인덱싱이란?

 IDE가 프로젝트 코드 파일을 분석하여 코드의 구조와 심볼(함수,변수,클래스 등)을 데이터베이스에 저장하는 과정이다.

인덱싱이 완료되면 사용자는 코드 탐색, 자동완성, 심볼 정의로 이동 등 작업을 빠르고 효율적으로 수행 할 수 있다.