如何防止 MSVC 用它的 memset 替换我的 memset?

问题描述 投票:0回答:0

我正在构建一个 EFI 驱动程序,因此不能使用 stdlib,所以没有 memset。我也在 ExitBootServices 之后运行,所以没有 edk2 CopyMem。这是我的功能:

void Set_Memory(VOID* Dest, UINTN Len, CHAR8 Val)
{
    for (int i = 0; i < Len; ++i)
    {
        ((UINT8*)Dest)[i] = Val;
    }
}

编译优化时,我得到

LNK2001 unresolved external symbol memset
。据推测,MSVC 编译器正在用对
Set_Memory
的调用替换我对
memset
的调用。我也无法定义自己的
memset
,因为我收到错误
C2169 'memset': intrinsic function, cannot be defined
。我怎样才能在不丢失其他优化的情况下防止这种情况发生?

c uefi
© www.soinside.com 2019 - 2024. All rights reserved.