C 包含样式和 CLion 自动导入

问题描述 投票:0回答:1

我正在争论要使用什么 c include 样式。 This 建议将

#include <foo.h>
样式用于系统标题,而不是您编写的任何内容,并且
#include "bar.h"
样式用于任何用户编写的标题。然而,c 的 CLion 自动导入器与此相矛盾。

Cmake 将两个目录都定位为项目的包含目录,但自动导入器希望从 foo.c 添加 ,尽管它是用户定义的。

关于什么是正确的包含方式存在一些争议。我的理解是

<>
看起来自上而下的标题,而
""
看起来本地,然后自上而下的标题。那么 clion 使用的优化是正确的,如果在这里,就看这里,如果不在这里,就从上往下看?

c clion
1个回答
0
投票

这主要是编码风格的问题。两种不同样式的约定和目的是,

#include <header.h>
适用于标准/系统库或编译器提供的其他库,
#include "header.h"
适用于其他所有内容,包括您自己的代码和您正在使用的任何第三方库。

然而,C标准明确规定,当使用

#include "header.h"
时,编译器将首先在本地项目/用户目录中查找,如果找不到标头,则会在系统库中查找,就像您输入了
#include <header.h>
一样。意味着无论您包含什么标头,
#include "header.h"
都将始终有效。尽管使用该形式包含标准/系统标头是不好的做法,因为这样做是非常规的。

如果某些 IDE 尝试以相反的方式进行操作,

#include <header.h>
对于用户标头,那么该 IDE 就会感到困惑并且行为不正确。

© www.soinside.com 2019 - 2024. All rights reserved.