c - C 编程的一般问题

标签 c

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

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

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

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

最佳答案

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

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

#ifndef MYHEADER_H
#define MYHEADER_H

/* ... */

#endif

C99 does it allow just in time initialization like for e.g. for( int i = 0 .... )? My compiler throws error. But in many books it is defined as legal.

然后告诉你的编译器使用C99。也许可以尝试 -std=c99,适用于 GCC 和 clang(但对于 clang 来说不是必需的,它默认为 C99 模式)。

Share any good resource for advanced usage of C programming, which discusses about the development strategies, usage.

没有。

(But you may want to format and indent your code...)

关于c - C 编程的一般问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17221167/

相关文章:

c++ - 相当于 gprof/callgrind 的分析库

java - jni 从 c/c++11 返回字符串数组并在 java 上使用而不在 c++ 端使用 for 循环?

c - 带有结构体指针数组的 strcpy() 的段错误

c - 如何使用 syslog 在终端上记录一些消息?

c++ - 模数最接近零

C 内存分配、结构数组中的段错误/双重释放

c++ - 如何在 NUMA 机器上的不同节点上分配数组的一部分?

c - 如何在 C 中使用 GSL 库对 Hermitian 矩阵进行对角化?

c++ - 同时(a==b);与 while(a==b) {;}

c - fwrite() 性能下降