c++ - Qt Creator 包括保护模式

标签 c++ qt qt-creator include-guards

Qt-Creator 中有一种方法可以在创建新类时自动添加模板字符串吗?

例如:

我创建了新的 class Foo。自动生成的头文件是

#ifndef FOO_H
#define FOO_H

class Foo{
};

#endif FOO_H

我会:

#ifndef SOMETHING_FOO_H
#define SOMETHING_FOO_H

class Foo{
};

#endif SOMETHING_FOO_H

理想情况下,我想根据项目自定义它,例如 PROJECTNAME_FOO_H 甚至更好的PROJECT_NAMESPACE_FOO_H

最佳答案

我实现了生成 NAMESPACE_NESTEDDNAMESPACE_CLASSNAME_H 形式的 header 保护。我找不到任何东西来获取项目名称,但就我而言,这不是问题,因为我的顶级命名空间是我的项目名称。

根据@Alan Birtles 的回答,我修改了cpp 类向导。您需要将文件(file.cppfile.hwizard.json)从 QtCreator 安装目录复制到您的主目录( $HOME/.config/QtProject/qtcreator/templates/wizards 在 Linux 和 macOS 上或 %APPDATA%\QtProject\qtcreator\templates\wizards 在 Windows 上,根据 doc ).将它们放在相同的子文件夹中(即 wizards/classes/cpp)。

wizard.json 中,更改行:

{ "key": "GUARD", "value": "%{JS: Cpp.headerGuard('%{HdrFileName}')}" },

到:

{ "key": "GUARD", "value": "%{JS: Cpp.classToHeaderGuard('%{Class}', '%{JS: Util.suffix('%{HdrFileName}')}')}" },

请注意,您可以根据自己的喜好添加一些静态文本:

{ "key": "GUARD", "value": "RANDOM_TEXT_%{JS: Cpp.classToHeaderGuard('%{Class}', '%{JS: Util.suffix('%{HdrFileName}')}')}_INCLUDED" },

完整的文件可以在这里找到: https://gist.github.com/juleswh/aeacc89342bc51b19044cf1e04483357

希望这对您有所帮助!


我使用了以下资源,以防它可能有用:

关于c++ - Qt Creator 包括保护模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50609424/

相关文章:

c++ - 如何在菜单栏中添加单选按钮,qt 5 c++

c++ - 如何使用 QDataStream 在文件中写入和读取 QList<Mat>?

c++ - 在 Linux 中编译基本 QtWidgets 应用程序时出现 QtCreator 问题

c++ - shared_ptr 在 if 条件下如何工作

c++ - 具有重复键的快速排序算法

c++ - QString 到 char* 的转换

c++ - 如何让 Qt Creator 在 Mac M1 上使用 Rosetta 和 x86 编译器?

c++ - 在 Qt Creator 中使用我自己的函数的自动文档?

c++ - 为什么不包括 guard 或编译指示一旦工作?

programming-languages - 我想知道 &a 真正返回的是什么?