c89

    5热度

    3回答

    看着mutter source code和evince source code,两者仍然使用C89风格在函数的开头声明所有变量,而不是首先使用它的位置(有限范围是好的)。他们为什么不使用C99? GNOME 3最近发布了,而且咕噜声是相当新的,所以如果原因是与旧代码风格的兼容性,这可能是切换的好机会。 这是否意味着需要用C89编写GNOME的代码?

    1热度

    1回答

    强制C风格的注释为强制C89代码一致性,我想的Visual Studio 2005 不接受C++ - 风格注释(// my comment),但只有C风格的注释(/* my comment */) 。 在Visual Studio 2005中是否有可用的配置?谢谢。

    1热度

    2回答

    C89(ANSI C)标准中有一个数据类型叫做long double,但是没有任何数学函数可以支持long double(<math.h>)。例如,sin函数接受一个long参数。 C99支持long double的数学函数。 我的问题是,当没有任何数学函数支持ANSI C中的long double时,long double是否有用?

    1热度

    2回答

    我想编写一个简单的C90代码利用数学库C90代码: 的main.c: #include <stdlib.h> #include <stdio.h> #include <math.h> int main() { printf("M_PI: %f\n", M_PI); } 我使用GCC编译器和使用选项 - ansi -pedantic强制执行C90标准。 gcc -ansi

    5热度

    2回答

    如果我有以下表现: c = (a) * (b) 什么是C90的标准说的子表达式“A”和“B”的顺序评价?

    2热度

    6回答

    隔开的数字,我得到了下面的字符串: "312 ,22 ,+12 , -12 , 5331" 有可能有一个数字之间1个多空间。 我需要将其转换为这样的一个数组: int arr[] = {312,22,-12,12,5331}; 是否有一个漂亮,优雅的方式与C89做到这一点?

    4热度

    2回答

    在Cprogramming.com我发现这段代码: int a,b; scanf("%d %d",&a,&b); b=(a+b)-(a=b); printf("%d %d",a,b); 它被要求是一个塞尖/特技为“互换,而无需使用临时”。我在Linux gcc上的测试证明了它。但是,编译器或者计算这个表达式的平台在这里的顺序会不会有所不同?使用这样的代码安全吗?

    5热度

    4回答

    我很好奇,想知道到底为什么C89编译器将在为你倾倒,当您尝试例如混合变量声明和代码,就像这样: [email protected]:~$ cat test.c #include <stdio.h> int main(void) { printf("Hello World!\n"); int x = 7; printf("%d!\n", x); re

    8热度

    2回答

    对此有一个窥视。编译器抱怨说我有一个整数溢出,但是当我查看C89标准的整数提升规则以及该表达式中的值时,似乎没有溢出。 [email protected]:~$ cat test.c #include <stdio.h> #include <inttypes.h> const uint32_t value = (0x7F-0x00 + 1) * (256 + 256*256 +

    2热度

    1回答

    我想知道用C90初始化这个结构的最佳方式是什么,同时仍然保持整洁。 在我的头文件,称它为test.h,我有以下结构定义: struct s_test_cfg{ char *a[3]; char *b[3]; char *c[3]; } 然后我把它声明为一个外部的结构,这样我可以在.c文件全球初始化: extern struct s_test_cfg tes