通过“b=(a+b)-(a=b);”进行交换安全吗?
在Cprogramming.com中我发现了这段代码: int a,b; scanf("%d %d",&a,&b); b=(a+b)-(a=b); printf("%d %d",a,b); 据称是“不使用临时交换”的提示/技…
在 Visual Studio 2005 中强制执行 C 风格注释
为了强制执行C89 代码一致性,我希望 Visual Studio 2005 不接受 C++ 风格的注释(// my comment),但是仅 C 风格注释(/* my comment */)。 Visual…
安装 gcc 是否需要 ISO C90 编译器
要安装 gcc,先决条件之一是用于引导 gcc 的 ISO C90 编译器,按照此链接 http:// /gcc.gnu.org/install/preconditions.html 我搜索过网络,但找不到…
使用 C89 和 C99 编译时,哪些 C 程序在运行时的行为有所不同?
我发现以下代码片段(我认为在维基百科中)在识别 C++ 注释时创建了一个与未识别时不同的运行时: int a = 4 //* This is a comment, but where does …
ANSI C 89 和 C++ 支持的 C 有什么区别?
我知道 ANSI C 89 和 C++ 支持的 C 之间存在一些差异。 例如,在 ANSI C 89 中,您应该在块的第一行声明变量。 或者当你想声明struct变量时,你应该使…
使用 GCC 将数学库链接到 C90 代码
我想利用数学库编译一个简单的 C90 代码: main.c: #include #include #include int main() { printf("M_PI: %f\n", M_PI); } 我使用 GCC 编译器并使…
无法使用另一个翻译单元的函数指针初始化静态结构?
Python 文档声称以下内容在“某些平台或编译器”上不起作用: int foo(int); // Defined in another translation unit. struct X { int (*fptr)(int);…
C90:如何在没有 C99 扩展的情况下在 C 中全局初始化此结构
我想知道使用 C90 初始化该结构的最佳方法是什么,同时仍然保持整洁。 在我的头文件中,将其称为 test.h,我定义了以下结构: struct s_test_cfg{ cha…
C89,混合变量声明和代码
我很好奇为什么当你尝试混合变量声明和代码时,C89 编译器会向你转储,例如: rutski@imac:~$ cat test.c #include int main(void) { printf("Hello W…
如何在 ANSI C 中生成 NaN、-Infinity 和 +Infinity?
我使用 ANSI C89(不是 C++),我想生成 NaN、-Infinity 和 +Infinity。 有没有标准的方法(例如标准宏)? 或者是否有任何独立于平台和编译器的方法…
我如何通过 C90 中的函数传递 va_list
我想将 va_list 传递给另一个函数。这是我想做的一个例子: void my_printf_1(char* string, ...) { va_list ap; va_start(ap, string); printf(strin…
无法反转转储输入文件
我想反转输入文件的内容并显示反转的内容,但我没有得到它;我想我犯了一个逻辑错误。 #include #include #include int main() { char* c = malloc(10…
Linux内核container_of宏和C90中的通用容器
是否可以实现 container_of 纯C90 中的宏?我不确定如何做到这一点,因为内核实现取决于 GCC Hacks,例如 typeof 运算符。 我这样问是因为我想在 C90 …