2017-11-25 56 views
0

所以我完全不熟悉编程。我目前正在学习计算机科学,刚刚读过我的编程手册的前200页,但有一件事我似乎无法看到书中明确指出的区别,这是保留字标准标识符 - 如何从代码中看到它是否是其中一个。保留字与标准标识符,如何查看差异

我知道保留字是一些不能改变的,而标准标识符可以(尽管不是根据我的书推荐)。问题是,而我的书上说的保留字总是喜欢纯小写,

(int, void, double, return)  

它有点似乎是标准indentifier像非常相似,

(printf, scanf) 

让我怎么知道什么时候是什么,还是我必须学习ANSI C中的所有保留字,这是我们正在学习的当前语言(或任何未来可能与之合作的语言)以了解何时何时使用?

+1

这种区别没有实际用途很大。另一方面,“保留字”通常对应于您将要学习的基本代码概念。 (例如,如果你不知道“返回”是什么,你将会遇到更大的问题!) –

+0

你可以阅读标准。 – Stargateur

回答

2

首先,您必须了解您学习的每种语言的规则,因为它是语言之间不同的区域之一。关于什么是没有普遍的规则。

二,在C中,您需要知道关键字列表;这似乎就是你所说的'保留字'。这些很重要;他们是不可改变的;他们不能被滥用,因为编译器不会让你。您不能使用int作为变量名称;它总是一种类型。第三,C预处理器可以被滥用来劫持任何东西;如果你用#define double int生效,你会得到你应得的,但没有什么可以阻止你这样做。

四,唯一预定义的变量名称是__func__,即当前函数的名称。第五,诸如printf()之类的名称由标准库定义,但标准库必须由使用C编译器的人员实现;询问GNU C库的维护者。有关标准与编译器编写者之间以及编译器编写者与使用编译器的程序员之间条约背后的许多想法的讨论,请参阅PJ Plauger于1992年出版的优秀书籍The Standard C Library。是的,它是古老而现代的标准的C库比C90的C库稍大,但背景信息仍然有效并且非常有用。

0

保留字是该语言的部分语法。没有int的C不是C,而是别的。它们是内置于语言中的,不能在此特定语言的任何位置进行定义。

例如,if是保留关键字。你不能重新定义它,即使你可以,你如何在C语言中做到这一点?不过,你可以在装配中这样做。

你所说的标准库函数是普通的函数已被包含到标准库中,仅此而已。它们是根据语言的语法来定义的。此外,您可以可以重新定义这些函数,但不建议这样做,因为这可能会导致各种错误和意外行为。然而,它是完全有效的写:

int puts(const char *msg) { 
    printf("This has been monkey-patched!\n"); 
    return -1; 
} 

你会得到一个警告会抱怨标准库函数的重新定义,但是这个代码是有效的反正。

现在,想象重新实现return

unknown_type return(unknown_type stuff) { 
    // what to do here??? 
}