Mac系统VSCode中正确配置NCurses(curses.h)的求助
解决VSCode中NCurses/Panel库链接问题及运行无反应的方案
一、配置VSCode的tasks.json实现自动编译链接
- 打开VSCode,按
Cmd+Shift+B(Mac)/Ctrl+Shift+B(Windows),选择「创建tasks.json文件」,再选择「clang++ 生成活动文件」模板。 - 修改tasks.json的
args字段,添加链接库参数-lpanel和-lncurses(注意-lpanel要放在-lncurses前,因为panel依赖ncurses)。
完整tasks.json示例:
{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: clang++ 生成活动文件", "command": "/usr/bin/clang++", "args": [ "-fcolor-diagnostics", "-fansi-escape-codes", "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}", "-lpanel", "-lncurses" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "编译器: /usr/bin/clang++" } ] }
二、解决手动编译后运行无反应的问题
手动编译生成的程序运行后无显示,是因为代码执行完endwin()就直接退出,终端还没展示内容就恢复了原始状态。需在endwin()前添加等待输入的逻辑,修改后的代码如下:
#include <iostream> #include <curses.h> #include <panel.h> using namespace std; int main() { initscr(); WINDOW *p = newwin(0, 0, LINES / 2, COLS / 2); PANEL *p_panel = new_panel(p); waddstr(p, "that's what i'm talking about!"); update_panels(); doupdate(); // 等待用户按键,确保能看到输出内容 wgetch(p); endwin(); return 0; }
三、验证操作
- 保存修改后的代码,按
Cmd+Shift+B编译生成可执行文件。 - 在VSCode终端中运行生成的文件(如
./lab8),即可看到文本输出,按下任意键后程序退出。
内容的提问来源于stack exchange,提问作者fvllen leaves
相关产品推荐
相关产品推荐

