在 C 中返回和操作返回值
我很难理解 C 处理返回值的方式。举例来说,我们有: int one = 0; one = foo(); // Why isn't one being assigned 10? // Clearly there is a differ…
C 中的非贪婪 fscanf 和缓冲区溢出检查
我希望让 fscanf 识别何时发生潜在的溢出,但我不知道如何最好地做到这一点。 例如,对于包含字符串的文件 **a**bb**cccc** ,我会执行 a char str[10…
在 C 中的字符串数组中重新分配内存
我试图满足 valgrind 的要求并提出一个很好的实现,但我遇到了一个障碍。本质上我想做的就是将数组中的两个字符串减少为一个。假设 arr 包含 { "One",…
桌面操作系统上的 C 编译器使用多少内存页来检测堆栈溢出?
这个问题与this one有关C99中的可变长度数组相关但不同。 答案指出,在堆栈中分配可变长度数组(或只是固定大小的大数组)的一个危险是分配可能会默默…
strtok函数设计
strtok() 函数使用静态变量。 因此它是不可重入的。并且不能用于解析多个字符串。 我想知道的是为什么strtok()要这样设计? strtok_r() 应该是 strtok…
在 Objective-C 中不使用 _Bool 的原因是什么?
从 C99 开始,C 现在有了一个正确的布尔类型,_Bool。 Objective-C 作为 C 的严格超集,继承了这一点,但是当它在 20 世纪 80 年代创建时,还没有 C …
C:将 int 转换为 size_t
在 32 位和 64 位 Linux 平台上,在 C99 中将 int 转换/转换为 size_t 的正确方法是什么? 例子: int hash(void * key) { //... } int main (int arg…
如何在 C99 中正确内联和使用内联函数,纠正链接故障?
在以下简化的 example.c 文件上执行 cc -std=c99 example.c : inline void a() { } int main() { a(); return 0; } 让我: 在函数“main”中: examp…
使用宏迭代生成函数声明
我正在尝试使用宏生成函数声明 /* goal: generate int f(int a, float b) */ template struct ptype; template struct ptype { typedef P type; }; #d…
在 C99 中使用检查单元测试框架时出现语法错误
当我尝试使用 检查单元测试框架 和 -std=c99 标志。 因此,我尝试 #include START_TEST(example) { fail(); } END_TEST int main(int argc, char** ar…