有没有用 CLion 的?请教一个问题

2015-07-28 17:30:24 +08:00
 skull
就是打个比方,hello.h文件已经 include 在 global.h里面,而 global 已经 include在 test.c 里面,这时候在 c 里面用到hello.h里面定义的 struct1结构体,当你敲出 struct1.这个小数点的时候会弹出结构体成员提示,再回车选中,这时候 hello.h 就会被自动include到 test.c 第一行,导致了重复包含。在 CLion 的设置里面找了又找,一直没有找到可以解决这个问题的选项。求问有没有达人知道怎么整?这个问题烦了我好久。。。
7541 次点击
所在节点    程序员
12 条回复
Rube
2015-07-28 19:16:14 +08:00
cmakelists
xfwduke
2015-07-28 20:06:32 +08:00
Google 下头文件保护

#ifdef _HELLO_H
#define _HELLO_H
...
...

#endif
zerh925
2015-07-28 20:13:02 +08:00
#ifndef _HELLO_H
#define _HELLO_H
//your code here

#endif

@xfwduke
xfwduke
2015-07-28 20:45:19 +08:00
a ....

哈哈哈. 少个 n
丢人了
skull
2015-07-28 22:01:07 +08:00
@xfwduke
@zerh925 我主要是想问有没有办法不要自动添加已经被包含的头文件。这种语法我是懂的😳
skull
2015-07-28 22:02:08 +08:00
@Rube 这个真有待研究
canautumn
2015-07-28 22:03:30 +08:00
现在CLion的Bug还很多,要用就忍忍吧。
skull
2015-07-28 22:06:53 +08:00
@canautumn 我爬墙去官网的issue看,有人说过这个问题,官方也回复了哪里可以设置,然后并没有什么卵用
xfwduke
2015-07-28 22:38:32 +08:00
我这边 auto import 需要按 alt+enter 触发, 倒是没碰到自己加上的
Valyrian
2015-07-29 09:28:41 +08:00
加了头文件保护怎么包含都一样。不过个人感觉最好越清晰越好,举个例子
1. a 包含了 b,你想在文件 c 里(仅)用 b 的函数,就不要包含a
2. a 包含了 b,你想在文件 c 里用 a 的函数和 b 的函数,就同时包含 a b(即使 a 包含了 b)。

如果包含某个文件的原因不是一目了然,最好注释说明
#include <a.h> /* for function f, g */
skull
2015-07-29 10:01:47 +08:00
@Valyrian 嗯嗯,不过这是公司搞的程序,有自己的代码风格,至于是好是坏就不管了,哈,就用着,也没有去改动
skull
2015-07-29 10:03:45 +08:00
@xfwduke 这个也有,不过是这个是在头文件没有被包含,然后自动提示的时候是用这个,不过我这个情况是头文件已经被包含了,可以正常使用了,它还会在我用的时候插进头文件,不过这种情况仅出现在使用结构体上

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/208976

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX