我很好奇是否有人使用过UnderC,Cint,Cling,Ch或任何其他C++解释器并且可以分享他们的经验.
我喜欢jQuery,我想知道是否有人使用过一个好的插件或(非jQuery)JavaScript库,允许自动格式化结构化字段,如电话号码或日期.我知道jquery-ui-datapicker插件,而不是我在这里寻找的东西.您可以输入电话号码123然后变为(123),其他号码将被格式化为(123)456 7890 Ext.123456.如果按删除,自动格式化的东西会自动消失,并重新定位光标,例如,在(123)之后并按删除将删除3并完成剩下的(124)567 8901分机.我玩过的那些看起来不可靠.
我正在构建 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;
}
}
Run Code Online (Sandbox Code Playgroud)
当进行优化编译时,我得到了LNK2001 unresolved external symbol memset
. 据推测,MSVC 编译器正在用Set_Memory
对memset
. 我也无法定义我自己的memset
,因为我得到了错误C2169 'memset': intrinsic function, cannot be defined
。如何在不失去其他优化的情况下防止这种情况发生?
这是 KN King 所著《C 编程:现代方法》一书中的练习
“假设以下数组包含一周的每小时温度读数,每行包含一天的读数:
int temperatures[7][24];
编写一条语句,使用搜索函数在整个温度数组中搜索值 32。”
下面的代码包括之前练习中的搜索函数,以及我调用该函数的 main() 函数。搜索只是处理一个数组并检查是否有任何元素等于提供的参数“key”。该解决方案似乎编译并执行预期的输出,它打印“找到 32”,或者如果我注释掉分配则不打印任何内容temperatures[5][22] = 32;
。
请注意该函数如何获取一维数组,但练习要求处理二维数组。
我最初尝试了这个解决方案,在函数调用中没有显式类型转换(int *),并在编译时得到了这个(我对其进行了一些重新格式化):
1 编译器警告:“从不兼容的指针类型传递搜索参数 1”
1 注意:“预期为‘const int *’,但参数的类型为‘int * [24]’”
为什么会出现警告/注释?如果存在不兼容,为什么它们不是错误?类型转换为 int* 消除了任何编译问题,但该解决方案实际上是正确/安全的还是我对 C 的理解/实践不好?我知道该函数需要 int* 但二维数组会衰减为 int * [24] 类型的指针,而无需进行类型转换。然而,代码在任何一种情况下都有效,尽管我只有一个测试用例。我怎样才能修改我的解决方案逻辑来完全避免这个问题?不过,搜索功能应该保持不变。
#include <stdbool.h>
#include <stdio.h>
bool search(const int a[], int n, int key);
int main(void){
int temperatures[7][24] = {0};
temperatures[5][22] = 32;
bool has32 = search((int*)temperatures, 7 * 24, 32);
if(has32)
printf("32 was found");
return 0;
}
bool …
Run Code Online (Sandbox Code Playgroud) c ×2
arrays ×1
c++ ×1
function ×1
html ×1
interpreter ×1
javascript ×1
jquery ×1
pointers ×1
uefi ×1