小编vin*_*nes的帖子

在assert中添加自定义消息?

有没有办法添加或编辑断言抛出的消息?我想用类似的东西

assert(a == b, "A must be equal to B");
Run Code Online (Sandbox Code Playgroud)

然后,编译器添加,时间等...

可能吗?

c++ assert

114
推荐指数
5
解决办法
6万
查看次数

如何将常见的C++命名约定与库的命名约定进行协调

大多数C++命名约定规定使用的camelCaseIdentifiers:即与类(大写字母开头的名称Person,Booking)和名称与字段和变量(小写字母开头getPrice(),isValid(),largestValue).这些建议完全不符合C++库的命名规则,其中涉及的类小写名称(赔率string,set,map,fstream)和names_joined_with_an_underscore对方法和字段(find_first_of,lower_bound,reverse_iterator,first_type).使图片更加复杂的是操作系统和C库函数,它们涉及C和Unix中的压缩小写名称以及Windows中以大写字母开头的函数.

因此,我的代码很乱,因为一些标识符使用C++库,C或操作系统命名约定,而其他标识符使用规定的C++约定.编写包装库功能的类或方法很痛苦,因为类似的东西以不同的样式名称结尾.

那么,您如何协调这些不同的命名约定?

c++ coding-style naming-conventions

42
推荐指数
3
解决办法
9376
查看次数

QLabel自动多行

例如,我们将QLabelMaximumWidth设置为400.
当我们尝试显示一些像素宽度超过400的文本时,它显示为截止.
有没有办法让QLabel在不使用QFontMetrics之类的情况下以多行显示此字符串?

qt qlabel

40
推荐指数
2
解决办法
4万
查看次数

您如何看待首先为命令行开发?

您对首先开发命令行有什么看法,然后通过简单地调用命令行方法在事后添加GUI?

例如.

W:\ todo AddTask"与John会面,re:登录同行评审""John的办公室""2008-08-22""14:00"

加载todo.exe并调用一个调用的函数AddTask,该函数执行一些验证并在数据库中引发会议.

最后你在屏幕上添加:

============================================================

Event:    [meeting with John, re: login peer review]

Location: [John's office]  

Date:     [Fri. Aug. 22, 2008]  

Time:     [ 2:00 PM]

[Clear]  [Submit]

============================================================

单击"提交"时,它将调用相同的AddTask函数.

这是考虑到:

  • 一种很好的编码方式
  • 只是为了新手
  • 可怕!

附录:

我注意到这里的趋势是"由GUI和CLI可执行文件调用的共享库".是否有一些令人信服的理由为什么它们必须分开,除了二进制文件本身的大小?

为什么不以不同的方式调用相同的可执行文件:

  • "todo /G" 当你想要全面的图形界面
  • "todo /I" 用于交互式提示 todo.exe(脚本等)
  • "todo <function>"当你只想做一件事并完成它时,你就会老去.

附录2:

有人提到"我[描述]的方式,每次GUI需要做某事时,你都需要产生一个可执行文件."

再次,这不是我的意图.当我提到示例GUI称为"相同的AddTask功能"时,我并不是说GUI每次都称为命令行程序.我同意这将是非常讨厌的.我曾打算(参见第一个附录)这一切都在一个可执行文件中,因为它只是一个很小的例子,但我不认为我的措辞必然会排除共享库.

另外,我要感谢你们所有人的意见.这是一种不断涌现在我心中的东西,我很欣赏你的经验.

language-agnostic command-line

21
推荐指数
4
解决办法
1389
查看次数

WPF DataGrid在IEditableObject上调用BeginEdit两次?

我有一个DataGrid绑定到IEditableObject的集合.

现在当我在一个单元格中单击两次时,它将被打开以进行编辑.

有趣的是:BeginEdit将被调用两次.有时对于相同的EditableObject,但有时对于两个不同的对象(特别是当我使用PgDn直到我到达DataGrid的末尾)时,将首先调用正确的一个,然后从集合中调用其他一些项目,之前从未进行过聚焦.

EndEdit也被调用两次,但始终用于所选项,而不是错误的项.

这是一个已知的问题吗?任何解决方法只能获得(右侧)一个通知.

wpf datagrid ieditableobject

17
推荐指数
1
解决办法
5990
查看次数

Linux内核编码风格

我是内核编程的新手,所以我想找出哪种编码风格更容易接受.例如,在错误处理的情况下,以下哪项更好?

这个:

/* some stuff */
if(error) {
    /* error handling */
    return -(errorcode);
}
/* normal actions */
Run Code Online (Sandbox Code Playgroud)

或者这个:

/* some stuff */
if(!error) {
    /* normal actions */
} else {
    /* error handling */
    return -(errorcode);
}
Run Code Online (Sandbox Code Playgroud)

我在哪里可以找到关于内核编码标准的任何文档?

c linux coding-style linux-kernel

16
推荐指数
1
解决办法
2万
查看次数

用于嵌入式系统的简约人类可读序列化格式解析器

通过"人类可读的序列化格式"我的意思是YAML,JSON,INI或喜欢.请注意,XML对于我的目的来说,太冗长和太不方便了,所以让我们把它作为最后的手段.

格式应将数据存储为"命名键 - 值"对,并允许嵌套和数组.但是,缺少数组并不重要.此外,非常感谢类型感知(不仅将数据作为普通字符串返回的能力).

我真正需要的是一个纯C库,它提供了一个用于解析数据的API(编码是可选的,不太重要).在为ARM7编译时,它必须适合大约16-20 KiB.

我已经用Google搜索并在周围徘徊,但找不到满足上述所有要求的工件.

c embedded serialization yaml human-readable

10
推荐指数
1
解决办法
839
查看次数

使用通配符的Java集合

public static void main(String[] args) {

    List<? extends Object> mylist = new ArrayList<Object>();

    mylist.add("Java"); // compile error

}
Run Code Online (Sandbox Code Playgroud)

上面的代码不允许您向列表中添加元素,并且通配符只能用作方法中的签名,同样不能用于添加,而只能用于访问.在这种情况下,上述目的是什么?

java

9
推荐指数
2
解决办法
5166
查看次数

可绑定的LINQ库或"为什么Obtics不再被主动维护"

最终的任务是:将一些WPF控件绑定到LINQ查询.

在搜索了"Bindable LINQ"后,我发现了对Obtics,Bindable LinqContinuous LINQ的多个引用.他们做我想做的事,但有一件事让我困惑:他们的年龄.似乎他们的发展几乎在2009-2010的某个时间停止了,这是可疑的.

使用它们仍然合理吗?他们最终是否被某些标准库手段所取代?

.net c# linq binding

9
推荐指数
1
解决办法
689
查看次数

在同一线程中的同一实例上多次调用shared_future :: get()是否合法?

我对此事既没有直接证实也没有反驳。所有答案似乎都针对“从多个线程进行访问”方面,而不是重复的访问本身。

该标准是否定义了行为std::shared_future?那boost::shared_future

c++ boost future

8
推荐指数
2
解决办法
219
查看次数