一、前言
對於 IAR 工程,我們在對一些定義進行跳轉時,IAR 編譯器會出現下列警告“IAR xxxx define on the command line",但是這些宏全局搜索不到,在調試時發現程序卻是會執行裡面的代碼,如下圖所示。

二、情況分析
出現上述情況說明該定義不在程序內顯示定義,它定義的位置一種情況是在 IAR 編譯器 options->C/C++ Compiler->Preprocessor->Defined symbols 位置處,如下圖所示。

另一種情況則是編譯器的內部定義也就是預定義,接下來將介紹如何查看 IAR 工程的預定義。
三、IAR 工程如何查看預定義
打開 IAR 安裝路徑,找到 iccarm.exe 程序。

對於 IAR 工程,我們在對一些定義進行跳轉時,IAR 編譯器會出現下列警告“IAR xxxx define on the command line",但是這些宏全局搜索不到,在調試時發現程序卻是會執行裡面的代碼,如下圖所示。

二、情況分析
出現上述情況說明該定義不在程序內顯示定義,它定義的位置一種情況是在 IAR 編譯器 options->C/C++ Compiler->Preprocessor->Defined symbols 位置處,如下圖所示。

另一種情況則是編譯器的內部定義也就是預定義,接下來將介紹如何查看 IAR 工程的預定義。
三、IAR 工程如何查看預定義
打開 IAR 安裝路徑,找到 iccarm.exe 程序。

在上述路徑新建一個 main.c 文件,文件內容如下:

此路徑 cmd 打開命令行,輸入如下命令

在exe 路徑下會生成 0.predef 預定義的文件

文件內包含了 IAR 編譯器的預定義

四、結語
對於 IAR 無法直接跳轉的定義一種情況是在 IAR 編譯器 options->C/C++ Compiler->Preprocessor->Defined symbols 位置處定義,另一種情況是該定義是 IAR 編譯器的預定義,本文介紹了兩種情況定義的位置。
評論