小编Mas*_*ugh的帖子

我如何保证终端具有 NCURSES 的 Unicode/宽字符支持?

我正在为一个小的 TUI(文本用户界面)练习开发 NCURSES 应用程序。不幸的是,我无法选择使用如此美妙而忠实的 ASCII。我的程序使用了很多 Unicode 框绘图字符。

我的程序已经可以检测终端是否支持颜色。我需要做类似的事情:

if(!supportsUnicode()) //I prefer camel-case, it's just the way I am.
{
    fprintf(stderr, "This program requires a Unicode-capable terminal.\n\r");
    exit(1);
}
else
{
    //Yay, we have Unicode! some random UI-related code goes here.
}
Run Code Online (Sandbox Code Playgroud)

这不仅仅是简单地包含ncursesw和设置语言环境的问题。我需要获取特定的终端信息,如果不会发生,实际上会抛出错误。例如,当用户尝试以可爱的XTerm而不是支持 Unicode 的UXTerm.

c unicode terminal ncurses widechar

5
推荐指数
1
解决办法
984
查看次数

如何确保数据类型与C++中的数据类型一样大

是否有一种简单的方法可以确保数据类型在C/C++中的不同平台和体系结构中保持相同的大小?

在C++中,假设我编写了一个假设的,简单的程序:

#include <iostream>

int foo;

int main(void)
{
    std::cout<<"Size of foo is "<<sizeof(foo)<<" bytes."<<std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

所有这个程序都打印任意整数数据类型的大小并退出.在我的机器上,它返回foo4个字节的大小(我有一个64位机器).

但是,假设我为Arduino或其他ATMega驱动板编写此程序:

int foo;
void setup()
{
    Serial.begin(9600);
    Serial.print("Size of foo is ");
    Serial.print(sizeof(foo));
    Serial.println(" bytes.");
}
void loop(){}
Run Code Online (Sandbox Code Playgroud)

在我的Arduino UNO板上,这只返回2(与short我的机器相同的大小).

是否可以创建(优选跨平台)标头或声明以确保数据类型的大小是一定的大小,以免遇到精度问题或数量非常大的问题?

理想情况下,这不仅可以用于Arduino板,还可以用于其他紧凑型MCU(如PicKit).

我对Arduino和整个Arduino IDE都比较陌生,所以请原谅我,如果我错过了一些非常简单的东西.

c++ types arduino arduino-ide arduino-uno

3
推荐指数
1
解决办法
91
查看次数

标签 统计

arduino ×1

arduino-ide ×1

arduino-uno ×1

c ×1

c++ ×1

ncurses ×1

terminal ×1

types ×1

unicode ×1

widechar ×1