【发布时间】:2012-01-16 07:40:05
【问题描述】:
是否有任何资源可以描述 C 和 C++ 必须提供的许多速记方法?那里有很多“狂野”的代码与教科书中的内容并不完全吻合。例如,许多教科书教你将变量的声明和初始化分开,但我看到相反的情况总是发生。
所以这是我目前的难题:C 是否允许没有类型标识符的程序?同样,教科书告诉我,如果没有指明其他类型,我至少应该给你一个 void 类型。但是,我看到了以下内容:
procedure(){
//procedure stuff
}
否则我一直被教导你至少必须这样做
void procedure(){
//procedure stuff
}
我发现自己经常处于这个位置,我认为这是没有接触过 C 或 C++ 项目/团队相关工作的症状。我很难确定“可编译代码”,因为许多书籍都教授了一种特定的方法,但在实践中完成相同任务的方法不止一种。谢谢。
【问题讨论】:
-
K&R C (pre-ANSI) 有隐式 int 函数。这意味着如果未指定返回类型,则假定为 int。
-
您的示例代码不等效。隐含的返回类型是
int而不是void。甚至这仅在 ANSI C 之前。但是你问错了问题。您无法了解所有可能的捷径成语或其他任何东西。这些会随着时间而变化(甚至是核心语言),只有识别未知事物并寻找答案的能力才是重要的。 -
“很多教科书都教你将变量的声明和初始化分开” 如果 C++ 教科书是这样教的,那他们就完全错了。如果 C 教科书正在教这个,那么它们可能已经过时了。 C89 要求在块的顶部声明所有变量,因此通常无法在声明点初始化它们。 C99 修复了这个问题,因此通常适用与 C++ 相同的规则。
-
请注意,那里有 很多 糟糕的 C 和 C++ 书籍,然后还有很多 旧 书籍只是没有更新以跟上语言的发展。仅仅因为您在教科书中阅读了某些内容并不能使其成为良好的练习(不再)。其中很多不是速记“技巧”,而是不断发展的最佳实践。如果您无法获得更好的书,则观看 Stack Overflow 问题的答案是学习它们的好方法。 :-)