如何在禁用 CRT 的情况下使用 CRT 的*某些*功能?

How to use *some* functions of CRT with CRT Disabled?

我已经禁用了 CRT,但是我希望使用一些 运行-time 函数,如 strtok、strcmpy、strcpy 等等,但我不希望整个 CRT 运行ning 可以有人告诉我如何在没有 运行ning CRT 和启用所有 CRT 功能的情况下使用这些功能。

我只想要几个 CRT 功能,有人可以帮助我吗?

亲切的问候,

罗汉·维杰哈瓦尔

您需要一种 C 运行-time 库,因为您已经告诉我们对 strcmp & Co 的愿望。如果您认为创建更小的二进制文件或减少对 DLL 的依赖性会带来任何好处你可以使用任何微型 CRT。

为了在引导加载程序中使用,我编写了自己的库,其中只包含我需要的函数。例如。您可以将函数 strcpy 编码为:

// choose const for arguments where necessary.
char* strcpy(char *dst, char *src)
{
    char* dest = dst;

    // copy char by char until '[=10=]' is found.
    while ( *dest++ = *src++ )
    {
    }

    return dst;
}

如果像 strtok 这样的函数不是无状态的,则必须初始化状态。所以你将不得不初始化你的微型 CRT。

如果您担心自己不能完全通过自己搜索其他人为您编写的代码,例如在 Code Project or µCLib