清理 C/C++ 代码揭示了可变参数宏的问题
我们正在对 C、C++ 和 Java 的代码库进行一些代码清理、修复有符号/无符号比较、运行静态分析等。 我们收到的警告之一是 warning: ISO C does not permit named variadic macros 及其伴随的警告 warning: ISO C99 requires rest arguments to be used 现在,在 C 代码中,我使用 C... »
我们正在对 C、C++ 和 Java 的代码库进行一些代码清理、修复有符号/无符号比较、运行静态分析等。 我们收到的警告之一是 warning: ISO C does not permit named variadic macros 及其伴随的警告 warning: ISO C99 requires rest arguments to be used 现在,在 C 代码中,我使用 C... »
for(int i=0; i<len_arr; i++) if(arr[i] == some_num){ printf("The idx of %d is: %d\n", some_num, i); break; } if(i == len_arr) printf("Number not found.\n"); 这不起作用。因为 i... »
我想知道是否可以在 C99 中迭代传递给可变参数宏的参数或使用任何 GCC 扩展? 例如是否可以编写一个通用宏,将结构及其字段作为参数传递并打印结构中每个字段的偏移量? 类似这样的: 结构一个{ 诠释一个; 诠释 b; 诠释 c; }; /* PRN_STRUCT_OFFSETS 将打印每个字段的偏移量 作为第一个参数传递的结构内。 */ int main... »
我得到一个“对'typeof'的未定义引用”-错误编译和链接: #include <stdio.h> #include <stdlib.h> #include <stddef.h> int main() { typeof(5); return 0; } gcc 版本为 4.3.3,命令行为“gcc.exe -std=c99 1.c -... »
在一个 C 项目中(OpenVPN 是有问题的项目,提交 4029971240b6274b9b30e76ff74c7f689d7d9750)我们模拟了 bool typedef int bool; #define false 0 #define true 1 现在切换到 C99 bool #include <stdbool.h> 但是在项目中 somewhere 对 bo... »
Afaik uintptr_t 和 intptr_t 可用于保存任何指向 void 的指针。因此,这些类型可用于存储指向数据的指针。 在 C99 或更高版本中,是否有类似的有符号和无符号整数类型能够保存指向函数的指针? ... »
我尝试阅读标准的相关部分(c99 的第 6.5 和 6.8 节),但这让我更加困惑并且没有明确的答案。这是有问题的代码: #include <stdio.h> #include <time.h> int t; #define block {\ int temp = 1; \ t = time(NULL); \ if (t == (time_t) ... »
在 32 位和 64 位 Linux 平台上,在 C99 中将 int 转换/转换为 size_t 的正确方法是什么? 例子: int hash(void * key) { //... } int main (int argc, char * argv[]) { size_t size = 10; void * items[size]; //... v... »
浮点边界的区间可用于过度近似实数集,只要任何结果区间的上限是向上舍入计算的,而下限是向下舍入计算的。 一个推荐的技巧是实际计算下界的否定。这允许 FPU 始终保持向上舍入(例如,“Handbook of Floating-Point Arithmetic”,2.9.2)。 这适用于加法和乘法。另一方面,平方根运算在加法和乘法方面是不对称的。 我突然想到,为了计算 sqrtRD,对于下限,以下... »
我有一个头文件,其中声明了几个全局变量,格式如下: constants.h #ifndef CONSTANTS_H #define CONSTANTS_H extern unsigned var; EXPORT_SYMBOL(var); #endif constants.c #include "constants.h" unsigned var = 10; foo.c #inc... »
这是我用 c 制作的回文检查器。它适用于所有输入,无论它们是否有标点符号,除非最后一项是标点符号。在这种情况下,它不会跳过它并进行比较,然后说它不是回文,而实际上它是。 EX(活过,魔鬼。不会是回文,而是活过,魔鬼会)。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include &... »
有没有办法告诉 gcc 在编译 c 文件时默认使用 c99 标准? 我想避免一直给它-std=c99 参数。 我假设我可以通过在 .bashrc 文件中创建别名来做到这一点,但似乎相当不雅。 ... »
假设我们在某处定义了 num(局部变量) int num; 然后,如果初始化,说: num = 420; 我们做某事,如果没有,我们不做。 这在 C99 / c 中是否可能?说明书上找不到。 ... »
std::remquo 函数的用途是什么?什么时候可以使用它来代替常规的 std::remainder 函数? 什么时候还想要商? ... »
你知道如何让夹板忽略我声明变量的位置吗? 我知道老派的 c 告诉你在 从每个功能开始, 但由于我是一个坏人,我喜欢在我使用它们的地方声明一些东西。 一个很好的例子是把 int i;就在 for(i=0;...) 之前。 我们举一个很简单的例子 #include <stdio.h> int main() { printf("Hello splint test\n"); ... »
我有很多功能,例如: void write(char* param, int len) { // } 我注意到我几乎从不使用& 运算符作为参数。当我传递一个数组时: char in[20]; write(in, 20); 我不需要它,但是当我传递一个值时: write(5, 1); 我似乎不需要它,当我传递一个指针时: char* in = malloc(20)... »
在阅读Is this proper C declaration? If so, why does it not work?时我在想 #include <stdio.h> int main(void) { int bool = 0; return bool == 0; } 这个程序是否严格遵守?换句话说,是允许stdio.h 包含stdbool.h 还是禁止这样做?这是规... »
我检查回文的程序(使用指针)必须计算几种情况。 输入可以是: 一个符号/字母(完成) 一个带有大写/小写字母的单词(完成) 一堆符号;如果只有符号,那么它总是回文(完成) 如果输入太大(>80),那么它不是回文(我需要使用 fgets,我设法完成了) 字母和符号的组合,如果是,那么就数字母(STRUGGLING WITH) 一个带有白色和逗号的句子 (STRUGGLING WITH) -->... »
我正在阅读 glibc-2.19 的源代码。我发现如果我使用fopen来获取FILE的指针,那么stdio的缓冲区已经存在了。它是在何时何地分配和初始化的? ... »
你好,我必须实现一个递归函数,输入一个列表的头部,将每个节点的和之后的所有节点相加。 (如果列表是 1->2->3,则它必须变为 6->5->3)然后将所有节点相加,例如变量k 变为 6+5+3 所以k=14。我无法实现它,你能告诉我我该怎么做吗? 谢谢 #include <stdio.h> #include <stdlib.h> typedef struct node... »