Questions tagged «c»

C是用于系统编程(OS和嵌入式),库,游戏和跨平台的通用编程语言。该标记应与ISO 9899标准(除非另有说明,最新版本9899:2018中定义的有关C语言的一般问题)一起使用-还要使用c89,c99,c11等标记特定于版本的请求。C与C ++截然不同,在没有合理理由的情况下,不应将其与C ++标记结合使用。



15
在C中有效使用goto进行错误管理?
这个问题实际上是一个有趣的讨论的结果前一段时间在programming.reddit.com上。基本上可以归结为以下代码: int foo(int bar) { int return_value = 0; if (!do_something( bar )) { goto error_1; } if (!init_stuff( bar )) { goto error_2; } if (!prepare_stuff( bar )) { goto error_3; } return_value = do_the_thing( bar ); error_3: cleanup_3(); error_2: cleanup_2(); error_1: cleanup_1(); return return_value; } 使用goto这里似乎是最好的方法,导致所有可能的代码最整洁,最有效,或者至少在我看来如此。在代码完成中引用史蒂夫·麦康奈尔: goto在例程中很有用,该例程分配资源,对这些资源执行操作,然后重新分配资源。使用goto,您可以在代码的一部分中进行清理。跳转减少了忘记检测到错误的每个位置重新分配资源的可能性。 这种方法的另一种支持来自Linux设备驱动程序本部分一书。 …

9
将结构初始化/重置为零/空
struct x { char a[10]; char b[20]; int i; char *c; char *d[10]; }; 我填写此结构,然后使用值。在下一次迭代中,我想将所有字段重置为0或null我开始再使用它之前。 我怎样才能做到这一点?我可以使用,memset还是必须仔细检查所有成员,然后逐个进行?

10
C / C ++中的最小双精度值
在C(++)程序中是否存在标准和/或可移植的方法来表示最小的负值(例如,使用负无穷大)? float.h中的DBL_MIN是最小的正数。
92 c++  c  math 



5
为什么此结构大小为3而不是2?
我已经定义了这个结构: typedef struct { char A:3; char B:3; char C:3; char D:3; char E:3; } col; 该sizeof(col)给我3的输出,但它不应该是2?如果仅评论一个元素,sizeof则为2。我不明白为什么:3个元素的5个元素等于15位,并且小于2个字节。 定义这样的结构时是否存在“内部尺寸”?我只需要澄清一下,因为从到目前为止的语言概念来看,我期望的大小为2字节,而不是3字节。
91 c++  c  struct 

4
C的设计原理,最佳实践和设计模式(或一般而言,过程编程)?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 在设计C项目时,可以遵循哪些已知的设计原则,最佳实践和设计模式?还是总体上对过程式(命令式)编程有用的设计原则? (我是“面向对象的一代”的孩子,必须第一次设计一个大型的C项目)

1
在同一包装上使用roxygen2和doxygen?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 我有一个R使用的软件包roxygen2。它在中有一些C代码/src,而我刚开始使用Doxygen。有什么方法可以合并文档或将编译器与roxygen2集成在一起?在哪里放置C代码文档有“最佳实践” 吗? 对roxygen2和doxygen进行谷歌搜索主要导致roxygen与doxygen结果相似。我发现了一些带有Doxyfiles的软件包,但是没有一致的组织。例如,lme4已inst/doc/Doxyfile输出到源目录doxygen外部的文件夹lme4。Matrix的根目录中也有一个Doxyfile(但在以前的版本中是inst。该文档也被导出到package目录之外。 是否有任何理由不将C文档包含在软件包中,或者尽管Doxygen广泛使用,为什么Doxygen在R软件包中却很少使用C? 更新:请参阅相关的roxygen2功能请求

12
头文件中的变量声明-静态还是非静态?
重构时,#defines我在C ++头文件中遇到了类似于以下内容的声明: static const unsigned int VAL = 42; const unsigned int ANOTHER_VAL = 37; 问题是,静电会产生什么区别(如果有)?请注意,由于经典#ifndef HEADER #define HEADER #endif技巧(如果很重要),不可能多次包含标头。 VAL如果标头被多个源文件包含,则静态值是否仅创建一个副本?
91 c++  c  static 

3
什么是CHAR_BIT?
引用代码以计算整数绝对值(abs),而无需从http://graphics.stanford.edu/~seander/bithacks.html分支: int v; // we want to find the absolute value of v unsigned int r; // the result goes here int const mask = v >> sizeof(int) * CHAR_BIT - 1; r = (v + mask) ^ mask; 专利变体: r = (v ^ mask) - mask; 什么是CHAR_BIT它,如何使用?

5
在C / C ++中声明指针变量的正确方法
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 9年前关闭。 我注意到有人使用以下表示法声明指针变量。 (a) char* p; 代替 (b) char *p; 我用(b)。符号(a)背后的合理性是什么?符号(b)对我来说更有意义,因为字符指针本身不是类型。而是类型是字符,变量可以是指向字符的指针。 char* c; 看起来好像有一个char *类型,而变量c是该类型。但实际上类型是char,而* c(由c指向的内存位置)就是该类型(char)。如果一次声明多个变量,这种区别就很明显。 char* c, *d; 这看起来很奇怪。c和d都是指向字符的指针。在这种情况下,下一个看起来更自然。 char *c, *d; 谢谢。
91 c++  c  pointers  coding-style 

10
用于C / C ++应用程序的开源PDF库?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 6年前关闭。 改善这个问题 我希望能够从我的(本机)C ++ Windows应用程序生成PDF输出。是否有任何免费/开源库可以做到这一点? 我看着这个问题的答案,但它们大多与.Net有关。
91 c++  c  pdf  open-source 


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.