【发布时间】:2021-03-27 18:20:21
【问题描述】:
我正在使用no_std 为我的操作系统制作一个VGA 打印宏,但由于某种原因无法正常工作。我正在使用vga crate,这样我就不必自己完成所有的 VGA 代码。我有一个名为_print的函数:
use core::fmt::{Arguments, Write};
use vga::colors::Color16;
use vga::writers::{Graphics640x480x16, GraphicsWriter};
pub fn _print(args: Arguments) {
unsafe {
let mut i: usize = 0;
for (_offset, character) in args.as_str().unwrap().chars().enumerate() {
Mode.draw_character(CurrentTextX + i, CurrentTextY, character, CurrentTextColor);
i += 8;
}
}
}
然后我有一个名为vprint!的宏:
#[macro_export]
macro_rules! vprint {
($($arg:tt)*) => {
crate::videographicsarray::_print(format_args!($($arg)*));
};
}
我没有使用alloc。我已经看到与此工作完全一样的代码,但由于某种原因,我的代码无法正常工作。它显示我输入的文本,但如果我传递任何参数,它就会恐慌。我做错了什么?
【问题讨论】:
-
“它不显示我传递的任何参数”是什么意思?它只是什么都不做,它会恐慌还是?
-
它很恐慌,抱歉没有说明。