这个问题试图收集社区维护的关于c编程语言的优质书籍清单,目标是各种技能水平.
C是一种复杂的编程语言,通过阅读在线教程很难在旅途中学习.综合性书籍通常是学习语言的最佳方式,找到一本好书是第一步.重要的是要避免写得不好的书籍,更重要的是要避免包含严重技术错误的书籍.
请建议编辑接受的答案,以添加高质量的书籍,具有近似的技能水平和每本书的简短描述/描述.(请注意,问题已被锁定,因此不会接受新的答案.列表中会保留一个答案)
随意讨论书籍选择,质量,标题,摘要,技能水平以及您认为错误的任何其他内容.C社区认为令人满意的书籍将列在名单上; 其余的将定期删除.
对于由C和C++用户协会(ACCU)进行评论的书籍,应该与书籍一起添加指向这些评论的链接.
也可以看看:
这个问题在Meta上作为2018年删除问题审计的一部分进行了讨论.
达成共识的目的是保持其未被删除和积极维护.
我的问题是关于何时应该用externC中的关键字引用函数.
我没有看到何时应该在实践中使用它.在我编写程序时,我使用的所有函数都通过我包含的头文件提供.那么为什么extern访问头文件中没有公开的东西会有用呢?
我可能会想到如何extern正确地工作,如果是这样,请纠正我.
编辑:如果extern是头文件中没有关键字的默认声明,你应该做些什么吗?
以高分辨率和可移植性为代码部分计时的最佳方法是什么?
/* Time from here */
ProcessIntenseFunction();
/* to here. */
printf("Time taken %d seconds %d milliseconds", sec, msec);
Run Code Online (Sandbox Code Playgroud)
是否有一个具有跨平台解决方案的标准库?
我需要区分两个日志文件,但忽略每行的时间戳部分(前12个字符是准确的).是否有一个好的工具,或一个聪明的awk命令,可以帮助我?
我有这个界面:
public interface IValidationCRUD
{
public ICRUDValidation IsValid(object obj);
private void AddError(ICRUDError error);
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用它(实现接口,自动生成代码)时,我得到了这个:
public class LanguageVAL : IValidationCRUD
{
public ICRUDValidation IsValid(object obj)
{
throw new System.NotImplementedException();
}
public void AddError(ICRUDError error)
{
throw new System.NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
AddError方法是公共的,而不是我想要的私有方法.
我怎么能改变这个?
如何使用活动记录实现继承?
例如,我想要一个类Animal,类Dog和类Cat.
模型和数据库表映射将如何?
我正在重新设计命令行应用程序,并正在寻找一种方法来使其使用更直观.传递给命令行应用程序的参数格式是否有任何约定?或者人们发现有用的任何其他方法?
什么内存泄漏探测器有人有很好的经验?
以下是目前答案的摘要:
Valgrind - 用于构建动态分析工具的仪器框架.
电围栏 - 与GDB一起使用的工具
夹板 - 注释辅助轻量级静态检查
Glow Code - 这是一个完整的实时性能和内存分析器,适用于使用C++,C#或任何.NET Framework开发应用程序的Windows和.NET程序员
另请参阅此stackoverflow帖子.
c ×5
c# ×2
activerecord ×1
command-line ×1
compare ×1
database ×1
debugging ×1
diff ×1
inheritance ×1
interface ×1
logging ×1
memory ×1
memory-leaks ×1
model ×1
operators ×1
parsing ×1
performance ×1
random ×1
shell ×1
timer ×1
timing ×1