小编Rob*_*vey的帖子

为什么C语言需要在if语句中围绕一个简单条件的parens?

这听起来很愚蠢,但多年来我一直无法想出一个需要这个的用例.快速谷歌搜索没有透露任何值得的东西.

从内存中有一个Bjarne Stroustrup提到的用例,但我找不到它的引用.

那你为什么不能用C语言呢:

int val = 0;
if val
  doSomehing();
else
  doSomehinglse();
Run Code Online (Sandbox Code Playgroud)

我可以接受"我们不能为词法分析添加支持"的原因,我只想弄清楚这种语法是否打破了其他语言结构.考虑到C/C++中有多少令人讨厌的语法特性,我几乎不认为这会增加很多复杂性.

javascript c c# c++ java

28
推荐指数
3
解决办法
2456
查看次数

java.lang.IllegalStateException:ActionBarImpl只能与兼容的窗口装饰布局一起使用

在最后几天,我确实看到增加的错误消息听起来相同.我不使用平板电脑ActionBar - 我只是为手机开发.

这些崩溃的原因是什么?

这是一个完整的痕迹:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=8995, result=0, data=null} to activity {xy.yyyy.app.android/xy.yyyy.app.Main}: java.lang.IllegalStateException: ActionBarImpl can only be used with a compatible window decor layout
at android.app.ActivityThread.deliverResults(ActivityThread.java:2818)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:2861)
at android.app.ActivityThread.access$1000(ActivityThread.java:122)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4123)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: ActionBarImpl can only be used with a compatible window decor layout
at com.android.internal.app.ActionBarImpl.init(ActionBarImpl.java:214)
at com.android.internal.app.ActionBarImpl.<init>(ActionBarImpl.java:200)
at android.app.Dialog.show(Dialog.java:255)
at xy.yyyy.app.MyProgressDialog.show(MyProgressDialog.java:33)
at xy.yyyy.app.MyProgressDialog.show(MyProgressDialog.java:23)
at xy.yyyy.app.Main$FetchTask.onPreExecute(Main.java:19) …
Run Code Online (Sandbox Code Playgroud)

android progressdialog illegalstateexception

28
推荐指数
0
解决办法
5474
查看次数

如何获取用户的本地时间而不是服务器的时间?

我怎样才能获得客户端的时间?当我使用date()它时返回服务器的时间.

javascript php

27
推荐指数
2
解决办法
6万
查看次数

确定连接到Qt中给定插槽的信号

我已将自己注入Qt应用程序,我试图找出给定插槽连接的信号,但无法找到有关此操作的任何信息.是否有开箱即用的机制?如果是这样,这是否暴露于QtScript?(如果没有,我可以很容易地包装它.)

如果没有这样的机制,那么添加它的最佳方法是什么?我无法在简单的钩子之外操纵现有的应用程序,但我可以自己挂钩QObject :: connect并存储连接,只是不确定这是否是最好的方法.

qt signals-slots

27
推荐指数
3
解决办法
3万
查看次数

如何更快地反向扫描二进制文件?

我有一个描述分组数据结构的二进制文件规范.每个数据包都有一个两字节的同步模式,因此可以使用BinaryReaderFileStream组合扫描数据包的开头:

while(!reader.EndOfFile)
{
    // Check for sync pattern.
    if (reader.ReadUInt16() != 0xEB25)
    {
        // Move to next byte.
        reader.BaseStream.Seek(-1, SeekOrigin.Current);
        continue;
    }

    // If we got here, a sync pattern was found.
}
Run Code Online (Sandbox Code Playgroud)

这个过程在向前方向上完全正常,但在相反方向扫描的类似代码至少慢两个数量级:

while(!reader.BeginningOfFile)
{
    // Check for sync pattern.
    if (reader.ReadUInt16() != 0xEB25)
    {
        // Move to previous byte.
        reader.BaseStream.Seek(-3, SeekOrigin.Current);
        continue;
    }

    // If we got here, a sync pattern was found.
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一些解决方法,比如向后移动一个任意数量(当前为1兆字节)并向前扫描,但很明显我真正需要的是一个BinaryReaderFileStream那个被修改为具有足够的性能特征,同时读取前进和反方向.

我已经有一个FastFileStream通过子类化普通FileStream和缓存 …

c# reverse buffer filestream .net-3.5

27
推荐指数
2
解决办法
3648
查看次数

在AngularJS中,HTML模板中包含的任何内联JavaScript代码都不起作用

在AngularJS中,HTML模板中包含的任何内联JavaScript代码都不起作用.

例如:

main.html文件:

<div ng-include="'/templates/script.html'"></div>
Run Code Online (Sandbox Code Playgroud)

和script.html文件:

<script type="text/javascript">
    alert('yes');
</script>
Run Code Online (Sandbox Code Playgroud)

当我打开主页时,我希望发出一条警告消息,说"是",但没有任何反应.我认为AngularJS中的一些安全限制阻止了内联脚本,但我找不到任何解决方法.

注意:我不使用jQuery或任何其他框架,只使用AngularJS 1.2.7.

html javascript angularjs

27
推荐指数
2
解决办法
5万
查看次数

为什么Resources.Load <Sprite>返回null?

我的项目有多个sprite位于Assets\Sprites中,我想用C#脚本加载它.

我测试了这个:

Sprite myFruit = Resources.Load <Sprite> ("Graphics_3");
Run Code Online (Sandbox Code Playgroud)

myFruit仍然是空的.

unity-game-engine unityscript

27
推荐指数
1
解决办法
7万
查看次数

如何向后读取文件以有效地查找子字符串

我有一个这种结构的巨大日志文件:

"timestamp":{"标识符":值}

"1463403600":{"AA":74.42},
"1463403601":{"AA":29.55},
"1463403603":{"AA":24.78},
"1463403604":{"AA":8.46},
"1463403605":{"AA":44.84},
"1463403607":{"AA":87.05},
"1463403608":{"AA":54.81},
"1463403609":{"AA":93.1},
"1463403611":{"AA":77.64},
"1463403612":{"AA":33.39},
"1463403613":{"AA":69.2},
Run Code Online (Sandbox Code Playgroud)

我想在(!)给定的时间戳后提取内容,如:

std::ifstream * myfunc( uint32_t timestamp) 
Run Code Online (Sandbox Code Playgroud)

例:

myfunc(1463403611);
/* returns
"1463403611":{"AA":77.64},
"1463403612":{"AA":33.39},
"1463403613":{"AA":69.2},
*/
Run Code Online (Sandbox Code Playgroud)

日志文件很长 - 太长而无法将其保留在内存中.代码将在资源有限的嵌入式设备(80Mhz,~10kB可用内存)上运行,因此我正在寻找一些有效解决方案的想法.

日志文件可能有500k +条目,并且在99%的时间内,时间戳将在最后100行中,因此从文件的beginnig开始并检查每一行的正确时间戳将是非常低效的.

所以我想我正在寻找一个解决方案来逐行读取文件.我没有真正的解决方案如何在不将大块加载到内存中的情况下提高效率.

我尝试从EOF开始阅读200字节的块,但是面对这个问题,在很多情况下,块会将时间戳减少一半.我试图检测到并在需要时重新选择一些字节,但感觉必须有一个聪明的解决方案.

c++ file data-management c++11

27
推荐指数
2
解决办法
1180
查看次数

鉴于以下LISP评估功能 - 添加defmacro需要什么?

给定LISP eval函数的以下定义 - 添加defmacro函数需要什么?(甚至只是评估一个宏)

(defun null. (x)
      (eq x '()))

(defun and. (x y)
  (cond (x (cond (y 't) ('t '())))
        ('t '())))

(defun not. (x)
  (cond (x '())
        ('t 't)))

(defun append. (x y)
  (cond ((null. x) y)
        ('t (cons (car x) (append. (cdr x) y)))))

(defun list. (x y)
  (cons x (cons y '())))

(defun pair. (x y)
  (cond ((and. (null. x) (null. y)) '())
        ((and. (not. (atom x)) (not. (atom y)))
         (cons (list. (car …
Run Code Online (Sandbox Code Playgroud)

lisp macros eval common-lisp

26
推荐指数
1
解决办法
7262
查看次数

等于运算符重载:是(x!= y)==(!(x == y))?

我希望这不是重复 - 我搜索了关于相等运算符的其他问题,但除了相关问题中的一些评论之外,我没有找到明确的陈述


TL;博士:

C++标准是否保证(x!=y)始终具有相同的真值!(x==y)


我知道有很多微妙之处这里涉及:经营者==!=可能超载.它们可能会被重载以具有不同的返回类型(只需要隐式转换为bool).甚至!-operator也可能在返回类型上重载.这就是为什么我手动提到上面的"真值",但试图进一步阐述它,利用隐式转换bool,并试图消除可能的含糊之处:

bool ne = (x!=y);
bool e = (x==y);
bool result = (ne == (!e));
Run Code Online (Sandbox Code Playgroud)

result保证是true在这里吗?

C++标准在5.10节中指定了相等运算符,但主要似乎是在语法上定义它们(以及关于指针比较的一些语义).该概念EqualityComparable的存在,但人们对其经营者的关系,没有专门的语句==!=运营商.

C++工作组存在相关文档,说......

至关重要的是,相等/不相等[...]表现为彼此的布尔否定.毕竟,如果operator ==()和operator!=()都返回false,那么世界就没有意义了!因此,通常相互实现这些运算符

但是,这仅反映了Common Sense™,并没有指定它们必须像这样实现.


一些背景:我只是试图编写一个函数来检查两个值(未知类型)是否相等,如果不是这样,则打印错误消息.我想说这里所需的概念是类型EqualityComparable.但是对于这个,人们仍然必须写if (!(x==y)) {...},不能if (x!=y) {...},因为这将使用一个不同的运算符,根本没有概念,EqualityComparable甚至可能不同的重载...


更新

我知道程序员基本上可以 …

c++ language-lawyer equals-operator

26
推荐指数
2
解决办法
1525
查看次数