这个问题试图收集社区维护的关于c编程语言的优质书籍清单,目标是各种技能水平.
C是一种复杂的编程语言,通过阅读在线教程很难在旅途中学习.综合性书籍通常是学习语言的最佳方式,找到一本好书是第一步.重要的是要避免写得不好的书籍,更重要的是要避免包含严重技术错误的书籍.
请建议编辑接受的答案,以添加高质量的书籍,具有近似的技能水平和每本书的简短描述/描述.(请注意,问题已被锁定,因此不会接受新的答案.列表中会保留一个答案)
随意讨论书籍选择,质量,标题,摘要,技能水平以及您认为错误的任何其他内容.C社区认为令人满意的书籍将列在名单上; 其余的将定期删除.
对于由C和C++用户协会(ACCU)进行评论的书籍,应该与书籍一起添加指向这些评论的链接.
也可以看看:
这个问题在Meta上作为2018年删除问题审计的一部分进行了讨论.
达成共识的目的是保持其未被删除和积极维护.
enum 元素名称容易与其他枚举元素名称,变量名称等重叠/冲突...
enum Fruit
{
apple,
orange
};
typedef enum Fruit Fruit;
enum Color
{
red,
orange // <-- ERROR
};
typedef enum Color Color;
char apple='a'; // <-- ERROR
Run Code Online (Sandbox Code Playgroud)
除了为每个枚举元素名称加上前缀之外,是否有符合C99的解决方案来避免冲突?
旁注:这个问题已经为C ++提供了答案
我正在寻找C99解决方案。
我有几个enum具有相同的字段名称:
enum Response
{
Ok = 0,
Busy = 1
}
enum Status
{
Ok = 0,
LoggedOut = 1
}
Run Code Online (Sandbox Code Playgroud)
这给出了错误:
错误:重新声明'确定'
怎么解决这个问题?
UPD
尝试使用枚举类:
enum class Response
{
Ok = 0,
Busy = 1
}
Status s1 = Status::Ok ;
Run Code Online (Sandbox Code Playgroud)
得到错误:
Error: 'Status' is not a class or namespace
Status s1 = Status::Ok ;
^
Run Code Online (Sandbox Code Playgroud)