clang-format
似乎从这样的块中弄得一团糟:
desc.add_options()("help", "output usage")
("inputDirectory", po::value<boost::filesystem::path>()->required(), "The input path")
("outputDirectory", po::value<boost::filesystem::path>()->required(), "The output path");
我知道// clang-format off
明确没有格式化块,但是有一组配置规则可以让它做一些合理的事吗?
答案 0 :(得分:0)
不确定是否可以仅通过配置.clang-format
选项来处理它。但是,对于boost :: program_options语法,您仍然可以做一些事情。除了链接operator()之外,您还可以创建program_optionso :: options_description对象并在多行中添加选项:
namespace po = boost::program_options;
po::options_description desc;
desc.add_options()("inputDirectory", po::value<boost::filesystem::path>()->required(), "The input path");
现在,即使clang-format破坏了您的格式,我相信它看起来也会比以前更好。如果这对您来说不够好,而格式化却使您不胜其烦,那么我建议您定义一些函数或缩短这些行的方法(在我们的项目中,我们获得了ConfigField结构的向量,其中包含value_semantic,名称等,以及我们通过调用add_options对其进行迭代-它看起来更短)。
恐怕没有其他办法了。
顺便说一句:是的,这是一个老问题,但是没有答案,我们最近也遇到了类似的问题。
答案 1 :(得分:0)
clang-format 不能删除注释,因此在行尾添加注释可以使代码看起来更漂亮,同时保持自动缩进的好处。这对于来自诸如 boost::assign 之类的库的项目特别有用。例如,当以 clang 格式使用 ColumnLimit 100 时:
group2 = boost::assign::list_of<score_pair>("Norway", list_of(1)(0))("USA", list_of(0)(0))(
"Andorra", list_of(1)(1));
// Versus:
group2 = boost::assign::list_of<score_pair> //
("Norway", list_of(1)(0)) //
("USA", list_of(0)(0)) //
("Andorra", list_of(1)(1));
使用上面的 desc.add_options 示例,添加换行注释如下:
desc.add_options()("help", "output usage") //
("inputDirectory", po::value<boost::filesystem::path>()->required(), "The input path") //
("outputDirectory", po::value<boost::filesystem::path>()->required(), "The output path");