我正在研究玩具编程语言。我使用LLVM生成机器代码。现在我的问题是:如何从头开始实现printf()函数?。在C程序中,您调用了libc
,就是这样。但是printf()内容如何在内部工作?
干杯
答案 0 :(得分:2)
printf()
实施分为两部分。
首先,你有一些适合你的特定调用约定的机制,可以使可变参数成为可能。
其次,虽然你编写了一个循环来查看给定函数的格式说明符。简单来说,它需要两个动作之一,或者将字符串复制到stdout(通过适合您平台的系统调用),或者将一个可变参数传递给函数并适当地显示(再次使用系统调用输出) )对于指定的格式。
例如,如果您看到%s
,那么您需要检索下一个未使用的参数,将其解释为char *
指针,然后确保它指向的内存被复制到stdout,直到您点击'\0'
。