2017-03-17 61 views
-1

我正在写一个基于终端的菜单,调用一个函数在箭头键的菜单中向上/向下移动。问题是我需要WINDOW才能被两个函数看到(它们都不是stdscr)。我试图通过在头文件中声明它没有成功来创建一个extern窗口。任何建议如何我可以做到这一点?谢谢C ncurses WINDOW as extern

+0

投票关闭,因为OP解决了打字错误的问题。 – KevinDTimm

回答

2

请抛出你可能有的任何代码以及结果和你正在运行的东西。读ncurses的文档,似乎没有在这里是真正的复杂性超出常规extern声明(注:不是ncurses的用户或专家):

  • 您需要在共享头的extern WINDOW *global_win;
  • 在某些源文件中,您只需要一个WINDOW *global_win = NULL;
  • 您需要在初始化例程中的某处运行global_win = newwin();
  • 在此之后,您应该能够从任何包含共享标题的文件中调用wrefresh(global_win)等,只要适当的目标文件链接到(具有步骤#2的文件)。

您还可以反转您的模型,并让您的库成为可以在任何窗口上操作的函数,例如, draw_circle(WINDOW *win) - 这样,您的主要方法就包含实用程序模块中的标题并传入当前工作窗口(其中可以有一个),而不是在全局共享窗口上运行的模块集合。这样,每个人都不需要看到extern,但是您必须通过WINDOW *

0

好的。我今天肯定已经在屏幕上主演太久了......大声笑。使WINDOW extern的代码太简单了。只需添加WINDOW * win; (其中* win将是您窗口的名称)在'include'下面的标题的某个地方,然后在任何函数的某个地方定义它。对不起,这么愚蠢......