小编sle*_*ske的帖子

虽然循环与空体检查易失性int - 这是什么意思?

我正在看一个C++类,它有以下几行:

while( x > y );
return x - y;
Run Code Online (Sandbox Code Playgroud)

x并且y是类型的成员变量volatile int.我不明白这个结构.

我在这里找到了代码存根:https://gist.github.com/r-lyeh/cc50bbed16759a99a226.我想这不保证是正确的甚至是工作.

c++ volatile while-loop

34
推荐指数
4
解决办法
4715
查看次数

何时在指针类型之间进行转换而不是C中未定义的行为?

作为C的新手,我很困惑何时投射指针实际上是好的.

据我所知,你几乎可以将任何指针类型转换为任何其他类型,编译器将允许你这样做.例如:

int a = 5;
int* intPtr = &a;
char* charPtr = (char*) intPtr; 
Run Code Online (Sandbox Code Playgroud)

但是,通常这会调用未定义的行为(尽管它恰好在许多平台上运行).这说,似乎有一些例外:

  • 你可以void*自由地投射(?)
  • 你可以char*自由地投射(?)

(至少我在代码中看过它...).

那么指针类型之间的哪些转换在C 中不是未定义的行为?

编辑:

我试着研究C标准("6.3.2.3指针"一节,见http://c0x.coding-guidelines.com/6.3.2.3.html),但除了一点点之外,我并没有真正理解它void*.

EDIT2:

只是为了澄清:我明确地只询问"正常"指针,即不是关于函数指针.我意识到强制转换函数指针的规则是非常严格的.事实上,我已经问过:-):如果我转换函数指针,改变参数个数会发生什么

c casting undefined-behavior

32
推荐指数
3
解决办法
7209
查看次数

Perl:使用s /(replace)并返回新字符串

在Perl中,运算符s/用于替换字符串的一部分.现在s/将改变其参数(字符串).然而,我想要替换打印它的部分字符串,如

print "bla: ", replace("a","b",$myvar),"\n";
Run Code Online (Sandbox Code Playgroud)

replace在Perl中有这样的功能,或者其他一些方法吗?s/在这种情况下不会直接工作,我想避免使用辅助变量.有没有办法在线进行此操作?

regex perl replace

29
推荐指数
2
解决办法
10万
查看次数

什么是WS-Addressing有用?

我刚刚开始使用SOAP Web服务,偶然发现了WS-Addressing.

我已阅读维基百科页面,但我很难理解WS-Addressing的重点.

根据维基百科和Web上的各种来源,WS-Addressing允许将"寻址信息"或"路由信息"放入SOAP请求的标头中.

为什么这有用?如果我通过HTTP(或甚至通过SMTP或UDP)发送请求,那么我发送到的地址是将处理我的请求的服务器的地址,并且服务器可以简单地通过相同的通道进行回复.那么为什么需要寻址/路由信息呢?

我对一些真实世界(或多或少)WS-Addressing有用的例子特别感兴趣.

soap web-services ws-addressing

28
推荐指数
1
解决办法
9935
查看次数

Java的枚举优于旧的"Typesafe Enum"模式?

在JDK1.5之前的Java中,"Typesafe Enum"模式是实现只能获取有限数量值的类型的常用方法:

public class Suit {
    private final String name;

    public static final Suit CLUBS =new Suit("clubs");
    public static final Suit DIAMONDS =new Suit("diamonds");
    public static final Suit HEARTS =new Suit("hearts");
    public static final Suit SPADES =new Suit("spades");    

    private Suit(String name){
        this.name =name;
    }
    public String toString(){
        return name;
    }
}
Run Code Online (Sandbox Code Playgroud)

(参见例如Bloch的Effective Java的第21项).

现在在JDK1.5 +中,"官方"方式显然是使用enum:

public enum Suit {
  CLUBS("clubs"), DIAMONDS("diamonds"), HEARTS("hearts"), SPADES("spades");

  private final String name;

  private Suit(String name) {
    this.name = name;
  }
} …
Run Code Online (Sandbox Code Playgroud)

java enums design-patterns language-design

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

如何在git中仅列出活动/最近更改的分支?

我有时使用包含许多分支的源代码存储库,其中大多数分支都是旧的,通常不再相关.

在这些情况下,完整的分支列表git branch不是很有帮助.有没有办法只列出"活跃"分支?例如,只有在过去n天内收到提交的分支?理想情况下,列表将包括每个分支的最后提交日期,并指示分支是否已完全合并.

PS:我意识到这也可以通过删除"旧"分支来解决(例如,如何处理实验性非合并git分支?),但这可能并不总是实际的或在给定项目上被接受.

git branch git-branch

25
推荐指数
2
解决办法
6275
查看次数

将有符号整数按位复制为无符号整数的有效方法

/* [1] */
int i = -1;
unsigned u = (unsigned)i;

/* [2] */
int i = -1;
unsigned u;
memcpy(&u, &i, sizeof i);

/* [3] */
int i = -1;
unsigned u = *(unsigned *)&i;
Run Code Online (Sandbox Code Playgroud)

为了将带符号的整数进行位复制到其未签名的伙伴,[1]应该可以在大多数机器上工作,但据我所知,这是不保证的行为.

[2] 应该做我想要的,但我想避免调用库函数的开销.

那怎么样[3]?它能有效地达到我想要的目的吗?

c c++

25
推荐指数
4
解决办法
1972
查看次数

用用户名和密码克隆github的私人回购

我已使用全局配置在我的系统上配置了帐户A,我可以从那里克隆我的所有回购.

现在我不想更改配置,我想克隆并使用我的用户名和密码执行帐户B的所有操作.我怎样才能做到这一点?

我试过了:

git clone username:passwordgit@github.com:*****/******.git
Run Code Online (Sandbox Code Playgroud)

但没有成功.

git github

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

拖动调整大小句柄时,javascript调整大小事件多次触发

我希望这个jQuery插件可以工作,但它没有:

http://andowebsit.es/blog/noteslog.com/post/how-to-fix-the-resize-event-in-ie (旧链接为noteslog.com/post/how-to-fix-the-resize -event-in-ie).

我在他的网站上添加了评论,但他们已经过审核,所以你可能还没有看到它.

但无论如何,让我解释一下我的愿望.我想要在用户暂停调整大小和/或完成调整大小时触发"调整大小"类型的事件,而不是用户主动拖动浏览器的窗口调整大小句柄时触发.我有一个相当复杂和耗时的OnResizeHandled函数我需要运行,但不能运行100次只是因为用户将窗口加宽了100px并且事件被激活了所有的移动像素.我想最好的选择是在用户完成调整大小后处理它.

jquery resize window javascript-events

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

为方法参数分配新值是否有问题?

Eclipse有一个选项可以警告赋值给方法的参数(在方法内),如:

public void doFoo(int a){
   if (a<0){
      a=0; // this will generate a warning
   }
   // do stuff
}
Run Code Online (Sandbox Code Playgroud)

通常我尝试激活(并注意)几乎所有可用的编译器警告,但在这种情况下,我不确定它是否值得.

我看到了改变方法中参数的合法情况(例如:允许参数"取消设置"(例如null)并自动替换默认值),但很少会导致问题,除非它可能有点混淆在方法中间重新分配参数.

你使用这样的警告吗?为什么/为什么不呢?

注意:

避免这种警告当然等同于制作方法参数final(只有这是编译器错误:-)).那么这个问题为什么我要在Java中的方法参数上使用关键字"final"?可能是相关的.

java eclipse compiler-warnings

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