草庐IT

c++ - 如何指定 clang 格式的文件?

我刚刚在Redhat6机器上构建了clang5.0.0并尝试运行clang-format。我无法让-style选项读取样式文件。这是我认为应该起作用的一组命令的示例:./clang-format-style=llvm-dump-config>.llvm-format./clang-format-style=.llvm-format~/myFile.cc当我运行此命令时,我收到以下错误:Invalidvaluefor-style当按预期放置在父目录中时,它似乎可以找到并使用.clang-format。内置类型也可以工作:./clang-format-style=Mozilla~/myFi

C++:如何将 fprintf 结果作为 std::string 不带 sprintf

我正在使用一个用C++实现的开源UNIX工具,我需要更改一些代码来让它做我想做的事情。我想做最小的改变,希望我的补丁在上游被接受。可在标准C++中实现且不会创建更多外部依赖项的解决方案是首选。这是我的问题。我有一个C++类——我们称之为“A”——它目前使用fprintf()将其高度格式化的数据结构打印到文件指针。在它的打印函数中,它还递归地调用了几个成员类的相同定义的打印函数(“B”就是一个例子)。还有另一个类C有一个成员std::string"foo",需要将其设置为A实例的print()结果。将其视为A的to_str()成员函数。在伪代码中:classA{public:...voi

C++:如何将 fprintf 结果作为 std::string 不带 sprintf

我正在使用一个用C++实现的开源UNIX工具,我需要更改一些代码来让它做我想做的事情。我想做最小的改变,希望我的补丁在上游被接受。可在标准C++中实现且不会创建更多外部依赖项的解决方案是首选。这是我的问题。我有一个C++类——我们称之为“A”——它目前使用fprintf()将其高度格式化的数据结构打印到文件指针。在它的打印函数中,它还递归地调用了几个成员类的相同定义的打印函数(“B”就是一个例子)。还有另一个类C有一个成员std::string"foo",需要将其设置为A实例的print()结果。将其视为A的to_str()成员函数。在伪代码中:classA{public:...voi

c++ - clang-format 可以为我对齐 #defines block 吗?

我有一个包含这样一些行的源文件;#defineARC_V2_LP_START0x002#defineARC_V2_LP_END0x003#defineARC_V2_STATUS320x00a所有值都很好地对齐。不幸的是,clang-format会这样做;#defineARC_V2_LP_START0x002#defineARC_V2_LP_END0x003#defineARC_V2_STATUS320x00a我找到了AlignConsecutiveDeclarations和AlignConsecutiveAssignments选项,但没有任何东西可以对齐连续的#defines。可以这样

c++ - clang-format 可以为我对齐 #defines block 吗?

我有一个包含这样一些行的源文件;#defineARC_V2_LP_START0x002#defineARC_V2_LP_END0x003#defineARC_V2_STATUS320x00a所有值都很好地对齐。不幸的是,clang-format会这样做;#defineARC_V2_LP_START0x002#defineARC_V2_LP_END0x003#defineARC_V2_STATUS320x00a我找到了AlignConsecutiveDeclarations和AlignConsecutiveAssignments选项,但没有任何东西可以对齐连续的#defines。可以这样

c++ - 我应该如何在 C++ 的类方法中正确使用 __attribute__ ((format (printf, x, y)))?

我正在尝试为调试打印定义一个类方法,其行为类似于printf:inlinevoiddebug(constchar*fmt,...)__attribute__((format(printf,1,2)))当我用-Wformat或-Wall编译时,这提示:error:formatstringargumentnotastringtype我记得一个类方法声明有一个隐含的this参数,所以我把参数的位置改成了2、3:inlinevoiddebug(constchar*fmt,...)__attribute__((format(printf,2,3)))现在它可以编译了,但看起来参数被移动了,好像t

c++ - 我应该如何在 C++ 的类方法中正确使用 __attribute__ ((format (printf, x, y)))?

我正在尝试为调试打印定义一个类方法,其行为类似于printf:inlinevoiddebug(constchar*fmt,...)__attribute__((format(printf,1,2)))当我用-Wformat或-Wall编译时,这提示:error:formatstringargumentnotastringtype我记得一个类方法声明有一个隐含的this参数,所以我把参数的位置改成了2、3:inlinevoiddebug(constchar*fmt,...)__attribute__((format(printf,2,3)))现在它可以编译了,但看起来参数被移动了,好像t

c++ - 如何标记一个区域以使 clang-format 不会触及它?

例如,在MySQL++库中,有一些宏可以用来定义基于sql表定义的简单结构,如下所示:sql_create_6(stock,1,6,mysqlpp::sql_char,item,mysqlpp::sql_bigint,num,mysqlpp::sql_double,weight,mysqlpp::sql_decimal,price,mysqlpp::sql_date,sdate,mysqlpp::Null,description)问题在于,clang-format会以一种更难以阅读的方式重新格式化它(每个参数都换行)。大多数代码格式化程序都可以识别特殊的format-off/forma

c++ - 如何标记一个区域以使 clang-format 不会触及它?

例如,在MySQL++库中,有一些宏可以用来定义基于sql表定义的简单结构,如下所示:sql_create_6(stock,1,6,mysqlpp::sql_char,item,mysqlpp::sql_bigint,num,mysqlpp::sql_double,weight,mysqlpp::sql_decimal,price,mysqlpp::sql_date,sdate,mysqlpp::Null,description)问题在于,clang-format会以一种更难以阅读的方式重新格式化它(每个参数都换行)。大多数代码格式化程序都可以识别特殊的format-off/forma

c++ - __attribute__((format(printf, 1, 2))) 用于 MSVC?

使用GCC,我可以指定__attribute__((format(printf,1,2))),告诉编译器该函数采用printf格式说明符的可变参数。这在我包装的情况下非常有用,例如vsprintf函数族。我可以有externvoidlog_error(constchar*format,...)__attribute__((format(printf,1,2)));每当我调用这个函数时,gcc将检查参数的类型和数量是否符合给定的格式说明符,就像它检查printf一样,如果不符合,则发出警告。MicrosoftC/C++编译器有类似的吗? 最佳答案