Kernel-Zhang的个人主页

C++编译器如何实现异常处理

深入探讨VC++如何实现异常处理。源代码包括VC++的异常处理库。 简介 与传统语言相比,C++ 的革命性特点之一是它对异常处理的支持。传统的错误处理技术往往不够完善,而且容易出错,而 C++ 提供了一个很好的替代方案。正常代码和错误处理代码之间的明确分离使程序非常整洁和易于维护。本文将讨论编译器如何实现异常处理。本文假定读者普遍了解异常处理机制及其语法。我为 VC++实现了异常处理库,...

Nim基础教程

Nim是一种相对较新的编程语言,它允许用户编写易于阅读的高性能代码。 不过,如果您正在阅读本Nim教程,那么您很可能已经了解Nim。 本教程正在编写中:如果您发现任何错误或有更好的想法,请在问题跟踪中报告。 这是为谁准备的? 没有或仅有极少编程经验的人 具有其他编程语言编程经验的人员 希望从零开始首次探索Nim的人 如何...

Futhark——在Nim中自动化导入C库

您是否已经为您的项目找到了完美的C库?但在Nim中却找不到对应的封装库?不用再找了!Futhark的目标是让你可以简单地将C头文件直接导入Nim,并允许你像使用C语言一样使用它们,而无需任何手动干预。它仍处于 alpha状态,但已经可以封装许多复杂的头文件,而无需任何重写或预处理。 import futhark # Tell futhark where to find the C lib...

标记异常,使错误处理更顺畅

错误处理,一个有争议且经常讨论的话题。每种语言都有一些处理错误的方法,无论是错误代码、结果类型、异常,还是完全不同的方法或混合方法。几乎从我们开始编写程序起,如何正确处理程序中出现的错误就变得非常重要。有关这方面的论文、讲座层出不穷,还有无数的库被编写出来,将一种语言处理错误的方法引入到其他语言中。 但这并不是一篇介绍所有可能的错误处理方法的文章。相反,我尝试了一种对常见的异常处理方式的补...

通过Nim赋能旧的C代码新功能

最近,我在用Nim封装一个C库时遇到了一个有趣的问题。这个库名叫MAPM,是一个比较古老但相当完整的库,用于处理任意精度的数学运算。不幸的是,这个库没有什么错误处理功能。如果出错,它几乎总是写入stderr并返回数字 0。几乎所有出错的情况都是因为函数的错误输入,例如尝试除以0或尝试得到不可能角度的三角函数结果。然而,当malloc/realloc无法分配更多数据时,它会写入stderr,然...