-1

我是一名 Python 开发人员。我正在学习 C 编程语言。我已经涵盖了大部分基础知识并慢慢转向 C 的高级用法。我有以下问题。

  1. 在 C 中,#ifndef _obj_h基于我们使用下划线。EG 如果我的头文件是obj.h,那么我将它用作_obj_h. 如果我有一个名为的头文件my_test_header.h怎么办?我会用它_my_test_header_h吗?这里的命名约定是什么?

  2. C99 是否允许像例如这样的及时初始化for( int i = 0 .... )?我的编译器抛出错误。但在许多书籍中,它被定义为合法的。

  3. 请分享任何关于 C 编程高级用法的好资源,其中讨论了开发策略、语言使用。

4

3 回答 3

2
  1. 主要和最重要的命名约定是不要使用同一标点符号的多个连续实例!!!!!!!!!

除了通常的烦恼之外:以下划线开头的标识符保留给实现。不要使用它们。此外,通常要编写预处理器宏ALL_CAPS,以便将它们与普通标识符、函数等轻松区分开来。因此,像这样编写包含防护:

#ifndef MYHEADER_H
#define MYHEADER_H

/* ... */

#endif

C99 是否允许即时初始化,例如 for(int i = 0 ....)?我的编译器抛出错误。但在许多书籍中,它被定义为合法的。

然后告诉你的编译器使用 C99。也许 try -std=c99,适用于 GCC 和 clang (但它不应该是必需的clang,它默认为 C99 模式)。

分享任何关于 C 编程高级用法的好资源,其中讨论了开发策略、用法。

不。

(但您可能想要格式化和缩进您的代码......)

于 2013-06-20T18:37:58.097 回答
1
  1. 根本不要使用前导下划线 - 以下划线开头的标识符由实现保留用于文件范围标识符。人们仍然在他们的代码中经常这样做,但他们可能不应该这样做。

    标准参考7.1.3 保留标识符

    — 所有以下划线开头的标识符始终保留用作普通和标记名称空间中具有文件范围的标识符。

  2. 是的,这是允许的。您的编译器太旧,或者您没有传递正确的标志以在 C99 或 C11 模式下编译。

  3. Stack Overflow 的题外话。

于 2013-06-20T18:35:46.030 回答
0
  1. 在 C 中,“_”下划线只是用来方便区分每个名称,它需要满足 sm 乘以规则才能唯一,所以 v 使用下划线 2.ya 你可以使用这种格式,但编译器 shd 需要更新 3.google 是最好的
于 2017-06-30T08:32:57.190 回答