C++ 从结构中使用ncurses扩展字符
我试图显示从结构中提取的ncurses扩展字符 当我尝试使用:C++ 从结构中使用ncurses扩展字符,c++,struct,character-encoding,ncurses,C++,Struct,Character Encoding,Ncurses,我试图显示从结构中提取的ncurses扩展字符 当我尝试使用: #include <ncurses.h> struct TEST_STRUCT { char nCharacter; // Where I want to store variable for printed character short nTestNumber; // Other stuff in struct }; TEST_STRUCT sTestData[] = {
#include <ncurses.h>
struct TEST_STRUCT
{
char nCharacter; // Where I want to store variable for printed character
short nTestNumber; // Other stuff in struct
};
TEST_STRUCT sTestData[] = {
{ '.', 1 }, // Period
{ ',', 2 }, // Comma
{ ACS_VLINE, 1 } // Vertical Line
};
int main(void)
{
initscr();
clear();
for( int n = 0; n < 3; n++)
{
addch(sTestData[n].nCharacter); // print the characters in the struct
}
refresh();
endwin();
return 0;
}
#包括
结构测试
{
char nCharacter;//我要存储打印字符的变量的位置
短nTestNumber;//结构中的其他内容
};
测试结构sTestData[]={
{'.',1},//句点
{',2},//逗号
{ACS_VLINE,1}//垂直线
};
内部主(空)
{
initscr();
清除();
对于(int n=0;n<3;n++)
{
addch(sTestData[n].nCharacter);//打印结构中的字符
}
刷新();
endwin();
返回0;
}
ACS_VLINE字符没有正确显示,但经过一番尝试后,我发现以下效果:
#include <ncurses.h>
struct TEST_STRUCT
{
int nCharacter; // Where I want to store variable for printed character
short nTestNumber; // Other stuff in struct
};
TEST_STRUCT sTestData[] = {
{ '.', 1 }, // Period
{ ',', 2 }, // Comma
{ 4194424, 1 } // Vertical Line
};
int main(void)
{
initscr();
clear();
for( int n = 0; n < 3; n++)
{
addch(sTestData[n].nCharacter); // print the characters in the struct
}
endwin();
return 0;
}
#包括
结构测试
{
int nCharacter;//我要在其中存储打印字符的变量
短nTestNumber;//结构中的其他内容
};
测试结构sTestData[]={
{'.',1},//句点
{',2},//逗号
{4194424,1}//垂直线
};
内部主(空)
{
initscr();
清除();
对于(int n=0;n<3;n++)
{
addch(sTestData[n].nCharacter);//打印结构中的字符
}
endwin();
返回0;
}
将数值存储在int中似乎是错误的,但它是有效的。我应该如何做才能“正确地”执行此操作。第一个示例的问题是符号
ACS\u VLINE
是数组中的一个条目,它不是静态初始化的(其实际内容取决于initscr
)。奇怪的是,g++并没有对此发出警告,但gcc-Wall却发出了警告
定义如下:
#define NCURSES_ACS(c) (acs_map[NCURSES_CAST(unsigned char,c)])
#define ACS_VLINE NCURSES_ACS('x') /* vertical line */
第二种情况下的常数不同,等于A_ALTCHARSET
与x
组合:
#define NCURSES_ATTR_SHIFT 8
#define NCURSES_BITS(mask,shift) ((mask) << ((shift) + NCURSES_ATTR_SHIFT))
#define A_ALTCHARSET NCURSES_BITS(1UL,14)
#定义课程属性第8班
#定义NCURSES\u位(掩码、移位)((掩码)