Questions tagged «c99»

该标签用于有关国际标准ISO 9899:1999(又称“ C99”)和技术勘误的问题,以及有关用C99编写的代码的问题(与K&R C,C89或更高版本的C Standard修订版(例如2011修订版C11相反)) 。


4
是否定义了减去两个NULL指针的行为?
如果两个非空指针变量都被赋值,是否定义了两个非空指针变量(根据C99和/或C ++ 98)的区别NULL? 例如,假设我有一个看起来像这样的缓冲区结构: struct buf { char *buf; char *pwrite; char *pread; } ex; 说,ex.buf指向数组或某些已分配的内存。如果我的代码始终确保pwrite并pread指向该数组或指向该数组的一个数组,那么我很有信心ex.pwrite - ex.pread将始终对其进行定义。但是,如果pwrite和pread都为NULL。我是否可以期望将两者定义相减,(ptrdiff_t)0还是严格遵从的代码需要测试指针是否为NULL?请注意,我唯一感兴趣的情况是两个指针均为NULL(表示缓冲区未初始化的情况)。在满足上述假设的前提下,原因与完全兼容的“可用”功能有关: size_t buf_avail(const struct s_buf *b) { return b->pwrite - b->pread; }
78 c++  c  c99  c89 

17
C99中最有用的新功能是什么?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 C99已经存在了10多年,但是对其的支持却来得很缓慢,因此大多数开发人员都对C89持保留态度。即使在今天,当我在C代码中遇到C99功能时,有时我还是会感到有些惊讶。 既然大多数主要的编译器都支持C99(MSVC是一个显着的例外,并且某些嵌入式编译器也很落后),我觉得使用C的开发人员可能应该知道他们可以使用哪些C99功能。一些功能只是以前从未标准化的通用功能(snprintf例如,),或者是C ++所熟悉的(灵活的变量声明放置,或单行//注释),但是其中一些新功能最初是在C99中引入的,并且许多程序员都不熟悉。 您发现C99中最有用的新功能是什么? 作为参考,C99标准(标记为草案,但据我所知与更新的标准相同),新功能列表以及GCC C99实施状态。 请为每个答案提供一项功能;随时留下多个答案。鼓励使用简短的代码示例演示新功能。
78 c  c99 

4
为什么在C和C ++中有图?
我今天了解到,C99和C ++中有图。以下是有效的程序: %:include <stdio.h> %:ifndef BUFSIZE %:define BUFSIZE 512 %:endif void copy(char d<::>, const char s<::>, int len) <% while (len-- >= 0) <% d<:len:> = s<:len:>; %> %> 我的问题是:为什么它们存在?
76 c++  c  c99  digraphs 

7
uint8_t,uint_fast8_t和uint_least8_t之间的区别
C99标准引入了以下数据类型。可以在此处找到有关AVR stdint库的文档。 uint8_t 表示它是8位无符号类型。 uint_fast8_t 表示它是最快的无符号整数,至少8位。 uint_least8_t 表示它是一个至少8位的无符号整数。 我了解uint8_t什么是uint_fast8_t(我不知道它如何在寄存器级别实现)。 1.您能解释一下“它unsigned int至少有8位”的含义吗? 2.uint_fast8_t与uint_least8_t相比如何以及uint8_t如何帮助提高效率/代码空间?
75 c++  c  integer  avr  c99 

8
状态机教程[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 4年前关闭。 改善这个问题 我只是想知道是否有人知道Internet上关于开发状态机的一些很好的教程。还是电子书? 我开始在状态机上工作,只需要一些一般性的知识即可入门。
74 c  c99  state-machine 

9
是否可以遍历可变参数宏中的参数?
我想知道是否有可能遍历传递给C99中可变参数宏的参数或使用任何GCC扩展? 例如,是否可以编写一个通用宏,该宏将结构及其字段作为参数传递并打印结构中每个字段的偏移量? 像这样: 构造一个{ 诠释 int b; int c; }; / * PRN_STRUCT_OFFSETS将打印每个字段的偏移量 内部结构作为第一个参数传递。 * / int main(int argc,char * argv []) { PRN_STRUCT_OFFSETS(结构a,a,b,c); 返回0; }

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.