尽管已经阅读了K&R,甚至还教过C课程,但我发现自己难以完全理解人们可能称之为"现代"的C课程.
在现代编程中似乎有许多不成文的约定,据我所知,在任何地方都没有记录.
以,例如,SQLite源代码.在其中我找到了例如:
SQLITE_API int sqlite3_close(sqlite3 *);
Run Code Online (Sandbox Code Playgroud)
什么SQLITE_API代表什么?这在句法上是如何正确的?
或这个:
#ifndef _SQLITE3_H_
#define _SQLITE3_H_
Run Code Online (Sandbox Code Playgroud)
是否有一个接受的约定何时使用下划线为宏添加前缀?有时我会看到前缀为两个下划线的宏.
或者使用固定大小的类型,例如uint32等等.什么时候应该使用这种做法,何时不使用?新的bool类型怎么样,什么时候应该优先于简单的整数?
当我阅读其他人的源代码时,这些是我自己提出的一些问题.有什么参考可以帮助我回答这些问题吗?
SQLITE_API像这样的代码很可能是一个预处理器定义,它担心在例如 DLL 库构建中公开调用。这很常见。
如果在 C 中全部是大写,那么它很可能是一个预处理器符号,一个好主意通常是通过预处理器运行游戏并读取结果。