[问题]谁能将这个文件编译成功? [已解决]

C、C++和Java语言
回复
头像
qlhn
帖子: 736
注册时间: 2006-08-25 10:37
送出感谢: 0
接收感谢: 0
联系:

[问题]谁能将这个文件编译成功? [已解决]

#1

帖子 qlhn » 2008-02-16 10:21

想编程在终端打印彩色文本,网上搜了搜,说是要用到 ncurses ,于是在/usr/share/doc/libncurses5-dev/examples 下面找到了个 background.c ,但是编译却出了错.

代码: 全选

/*
 * $Id: background.c,v 1.1 2003/12/07 00:06:33 tom Exp $
 */

#include <test.priv.h>

int
main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
{
    short f, b;

    initscr();
    cbreak();
    noecho();

    if (has_colors()) {
	start_color();

	pair_content(0, &f, &b);
	printw("pair 0 contains (%d,%d)\n", f, b);
	getch();

	printw("Initializing pair 1 to red/black\n");
	init_pair(1, COLOR_RED, COLOR_BLACK);
	bkgdset(' ' | COLOR_PAIR(1));
	printw("RED/BLACK\n");
	getch();

	printw("Initializing pair 2 to white/blue\n");
	init_pair(2, COLOR_WHITE, COLOR_BLUE);
	bkgdset(' ' | COLOR_PAIR(2));
	printw("WHITE/BLUE\n");
	getch();

	printw("Resetting colors to pair 0\n");
	bkgdset(' ' | COLOR_PAIR(0));
	printw("Default Colors\n");
	getch();

	printw("Resetting colors to pair 1\n");
	bkgdset(' ' | COLOR_PAIR(1));
	printw("RED/BLACK\n");
	getch();

	printw("Setting screen to pair 0\n");
	bkgd(' ' | COLOR_PAIR(0));
	getch();

	printw("Setting screen to pair 1\n");
	bkgd(' ' | COLOR_PAIR(1));
	getch();

	printw("Setting screen to pair 2\n");
	bkgd(' ' | COLOR_PAIR(2));
	getch();

	printw("Setting screen to pair 0\n");
	bkgd(' ' | COLOR_PAIR(0));
	getch();

    } else {
	printw("This demo requires a color terminal");
	getch();
    }
    endwin();

    ExitProgram(EXIT_SUCCESS);
}
编译:
$gcc background.c -lcurses -o background
background.c:5:23: error: test.priv.h: No such file or directory
background.c:8: 错误: syntax error before ‘GCC_UNUSED’
background.c: 在函数 ‘main’ 中:
background.c:24: 错误: ‘COLOR_RED’ 未声明 (在此函数内第一次使用)
background.c:24: 错误: (即使在一个函数内多次出现,每个未声明的标识符在其
background.c:24: 错误: 所在的函数内只报告一次。)
background.c:24: 错误: ‘COLOR_BLACK’ 未声明 (在此函数内第一次使用)
background.c:30: 错误: ‘COLOR_WHITE’ 未声明 (在此函数内第一次使用)
background.c:30: 错误: ‘COLOR_BLUE’ 未声明 (在此函数内第一次使用)
background.c:67: 错误: ‘EXIT_SUCCESS’ 未声明 (在此函数内第一次使用)

那个头文件找不到, 怎么办?
上次由 qlhn 在 2008-02-18 13:45,总共编辑 1 次。
头像
qqttdh
帖子: 896
注册时间: 2007-07-20 22:15
送出感谢: 0
接收感谢: 0

#2

帖子 qqttdh » 2008-02-16 10:29

代码: 全选

/****************************************************************************
* Author: Thomas E. Dickey <dickey@clark.net> 1996 *
****************************************************************************/
/* $Id: test.priv.h,v 1.19 2000/09/02 19:31:58 tom Exp $ */

#if HAVE_CONFIG_H
#include <ncurses_cfg.h>
#else
#define H 
头像
qqttdh
帖子: 896
注册时间: 2007-07-20 22:15
送出感谢: 0
接收感谢: 0

#3

帖子 qqttdh » 2008-02-16 10:30

头像
titainium
帖子: 689
注册时间: 2006-12-02 12:25
送出感谢: 0
接收感谢: 0

#4

帖子 titainium » 2008-02-16 19:35

ls强人阿!
Titainium
头像
qlhn
帖子: 736
注册时间: 2006-08-25 10:37
送出感谢: 0
接收感谢: 0
联系:

#5

帖子 qlhn » 2008-02-18 13:52

现已能够编译成功.

把开头的 #include <test.priv.h> 注释掉吧.
添上一行#include<curses.h>
再把最后面的 exitprogram(...) 删掉吧, 换成 return(0);

这样就没问题了. 编译时 别忘了 加上 -lcurses
回复

回到 “C/C++/Java”