Questions tagged «c»

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



30
为什么省略花括号被认为是不好的做法?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心寻求指导。 8年前关闭。 为什么每个人都告诉我编写这样的代码是一种不好的做法? if (foo) Bar(); //or for(int i = 0 i < count; i++) Bar(i); 关于省略花括号的最大论据是,有时花括号可能是花括号的两倍。例如,以下代码为C#中的标签绘制发光效果。 using (Brush br = new SolidBrush(Color.FromArgb(15, GlowColor))) { for (int x = 0; x <= GlowAmount; x++) { for (int y = 0; y <= GlowAmount; y++) { g.DrawString(Text, this.Font, br, new Point(IconOffset …
177 java  c#  c++  c  coding-style 

1
Mutex示例/教程?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使它成为Stack Overflow 的主题。 4个月前关闭。 改善这个问题 我是多线程的新手,并试图了解互斥锁的工作原理。做了很多谷歌搜索,我发现了一个不错的教程,但是它仍然对它的工作方式产生了一些疑问,因为我创建了自己的程序,其中锁不起作用。 互斥锁的一种绝对不直观的语法pthread_mutex_lock( &mutex1 );是,当我真正想要锁定的是其他变量时,它看起来像互斥锁已被锁定。这种语法是否意味着锁定互斥锁会锁定代码区域,直到互斥锁解锁为止?那么线程如何知道该区域已锁定?[ 更新:线程知道该区域已被 Memory Fencing 锁定 ]。难道这种现象不应该称为临界区吗?[ 更新:关键部分对象仅在Windows中可用,其中这些对象比互斥对象快,并且仅对实现该对象的线程可见。否则,关键部分仅指由互斥锁保护的代码区域 ] 简而言之,能否请您提供最简单的互斥体示例程序以及有关其工作原理的最简单的解释?我确信这将对其他许多新手有所帮助。

1
您遇到过的最糟糕的现实世界宏/预处理器滥用情况是什么?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它当前不接受新的答案或互动。 您遇到过的最糟糕的 现实世界宏/预处理器滥用情况(请不要有任何人为的IOCCC答案* haha​​ *)? 如果确实很有趣,请添加一个简短的摘要或故事。目的是教一些东西,而不是总是告诉人们“从不使用宏”。 ps:我以前使用过宏...但是通常,当我有一个“真实的”解决方案时,我最终会摆脱它们(即使真正的解决方案是内联的,因此它变得类似于宏)。 奖励:举一个例子,其中宏确实比非宏解决方案好。 相关问题: C ++宏什么时候有益?
176 c++  c  macros  preprocessor 






6
我的Linux开发项目使用Clang vs GCC
我正在上大学,并且对于一个正在使用C的项目,我们已经探索了GCC和Clang,并且Clang似乎比GCC更友好。结果,我想知道使用clang(相对于GCC)在Linux上用C和C ++进行开发有什么优点或缺点? 就我而言,这将用于学生级别的课程,而不是生产课程。 如果使用Clang,应该使用GDB进行调试并使用GNU Make,还是使用其他调试器和make实用程序?
175 c++  c  linux  gcc  clang 

11
跟踪#include依赖关系的工具
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使它成为Stack Overflow 的主题。 6年前关闭。 改善这个问题 有什么好的建议吗?输入将是头文件的名称,输出应是所有文件的列表(最好是树),包括直接或间接地包括它。
175 c++  c  header 

7
i =(i,++ i,1)+1; 做?
阅读有关未定义行为和序列点的答案后,我编写了一个小程序: #include <stdio.h> int main(void) { int i = 5; i = (i, ++i, 1) + 1; printf("%d\n", i); return 0; } 输出为2。哦,天哪,我没有看到减价!这是怎么回事 另外,在编译上面的代码时,我得到一条警告: px.c:5:8:警告:逗号表达式的左侧操作数无效 [-Wunused-value] i = (i, ++i, 1) + 1; ^ 为什么?但是可能我的第一个问题的答案会自动回答。

8
errno是线程安全的吗?
在中errno.h,此变量被声明为extern int errno;是我的问题,errno在某些调用之后检查值还是在多线程代码中使用perror()是安全的。这是线程安全变量吗?如果没有,那还有什么选择呢? 我在x86体系结构上将Linux与gcc一起使用。
174 c  linux  multithreading  gcc 


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.