royqh1979 / RedPanda-CPP

A light-weight C/C++ IDE based on Qt
GNU General Public License v3.0
938 stars 102 forks source link

当 #include 后的内容是宏定义时,编辑器无法找到其包含的头文件的内容 #407

Closed West-Pavilion closed 4 months ago

West-Pavilion commented 4 months ago

当 #include 后的内容是宏定义时,编辑器无法找到其包含的头文件的内容

例如,请考虑如下的 C++ 代码:

#define CPP_BASIC_IO <iostream>

/* 当 #include 后的内容是宏定义时,编辑器无法找到其包含的头文件的内容 */

#include CPP_BASIC_IO

int main(){
    /* 通过这种方式包含的头文件 <iostream> 里的函数可以正常调用 */
    std::cout << "header is included by macro" << std::endl;
}

在小熊猫C++(rc2版 3.0.2750)中,这种使用宏定义来指定 #include 的头文件名的用法尚未被编辑器的智能补全提示支持

这种用法是在 raylib 的 c++ wrapper 库中发现的:https://github.com/RobLoach/raylib-cpp

屏幕截图(381)

下面是对应的测试代码:

当 #include 后的内容是宏定义时,编辑器无法找到其包含的头文件的内容.zip

royqh1979 commented 4 months ago

真刑

Ltabsyy commented 4 months ago

不愧是West-Pavilion