小编Wil*_*mKF的帖子

在C++中禁止使用未使用的变量警告=>编译器错误或代码错误?

目前,我使用以下函数模板来抑制未使用的变量警告:

template<typename T>
void
unused(T const &) {
  /* Do nothing. */
}
Run Code Online (Sandbox Code Playgroud)

但是,当从Linux移植到cygwin时,我现在在g ++ 3.4.4上遇到编译器错误(在linux上我是3.4.6,所以这可能是一个bug修复?):

Write.cpp: In member function `void* Write::initReadWrite()':
Write.cpp:516: error: invalid initialization of reference of type 'const volatile bool&' from expression of type 'volatile bool'
../../src/common/Assert.h:27: error: in passing argument 1 of `void unused(const T&) [with T = volatile bool]'
make[1]: *** [ARCH.cygwin/release/Write.o] Error 1
Run Code Online (Sandbox Code Playgroud)

未使用的参数是一个声明为的成员变量:

  volatile bool readWriteActivated;
Run Code Online (Sandbox Code Playgroud)

这是编译器错误还是我的代码中的错误?

这是最小的测试用例:

template<typename T>
void unused(T const &) { }

int main() {
  volatile bool x = …
Run Code Online (Sandbox Code Playgroud)

c++ templates language-lawyer member-variables

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

为什么有些Python函数在参数列表周围有一组额外的括号?

我见过一些像这样编写的Python函数:

def get_year((year,prefix,index,suffix)):
  return year
Run Code Online (Sandbox Code Playgroud)

如果没有像这样的额外括号,它与其他函数有何不同(如果有的话):

def do_format(yr,pfx,id,sfx):
  return "%s %s %s/%s"%(yr, id, pfx, sfx)
Run Code Online (Sandbox Code Playgroud)

或者它只是风格的品味问题,或者如果它们不同,可以将get_year()重写为do_format()或反之亦然,而不影响现有调用者的语法?

python arguments parentheses

11
推荐指数
2
解决办法
1508
查看次数

如何调整Levenshtein Distance算法以限制单个单词的匹配?

我在C++中使用Levenshtein Distance算法比较两个字符串来衡量它们彼此之间的距离.然而,普通的Levenshtein距离算法不区分由空格界定的单词边界.这导致距离计算小于我想要的距离.我正在比较标题,看它们彼此有多接近,我希望算法不会将字符计算为匹配,如果它们来自多个单词.

例如,如果我比较这两个字符串,我会得到以下结果,+指定匹配并-指定不匹配:

Al Chertoff Et
Al Church Department of finance Et
+++++------+--++-----++-+------+++
Al Ch      e  rt     of f       Et
Run Code Online (Sandbox Code Playgroud)

我得到一个距离为20,在"Chertoff"四个单词中匹配单词,"Church Department of finance"而我真的希望它们被认为是彼此更远的,因为不允许字符与多个单词匹配并且与单词的距离为25 "Chertoff"大多数匹配一个单词"Department",三个字符匹配:

Al Chertoff Et
Al Church Department of finance Et
+++--------+--++---------------+++
Al         e  rt                Et
         Ch     off
Run Code Online (Sandbox Code Playgroud)

我怎样才能调整Levenshtein距离来实现这个目标,还是有另一种距离算法更适合这个?也许在每个单词上使用Levenshtein距离单独单词工作并选择距离最短的单词?但是,如果将一个单词深深地匹配到字符串中会导致后续单词匹配得不好,因为它们的匹配在字符串中最早?这可能以某种方式完成,Levenshtein距离适应于单词级别吗?

例如,对于以下更复杂的示例,这个想法的最短距离是20:

Al Chertoff Deport Et
Al Church Department of finance Et
+++++----++++-++---------------+++
Al Ch     Dep rt                Et
     ertoff  o
Run Code Online (Sandbox Code Playgroud)

而不是最大化"Chertoff"匹配并获得24的更长距离:

Al Chertoff Deport Et
Al …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm heuristics stdstring levenshtein-distance

11
推荐指数
1
解决办法
2894
查看次数

如何配置bugzilla更新时不进入下一个bug?

默认情况下,当您对Bugzilla条目应用更改时,Web界面会前进到列表中的下一个错误.

我想禁用此功能,因为它几乎不是我想要的,计划稍后进行进一步的更新.此外,我经常更新错误的bug,因为它改变了当前的bug而没有注意到.

如何配置Bugzilla不要像这样前进?

configuration bugzilla

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

我的线程可以帮助操作系统决定何时将其切换出来吗?

我正在使用C++中的Linux上的线程应用程序,它试图实时,在心跳上执行操作,或尽可能接近它.

在实践中,我发现操作系统正在交换我的线程,并在切换时导致延迟达十分之一秒,导致心跳不规则.

有没有办法我的线程可以提示操作系统,现在是上下文切换它的好时机?我可以在做心跳之后立即进行此呼叫,从而最大限度地减少由于定时上下文切换导致的延迟.

c++ linux pthreads context-switch

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

大于和大于或等于之间是否有任何性能差异?

在今天的现代处理器中,分支条件的大于或大于或等于比较之间是否有任何性能差异?如果我有可能很容易被任何条件,没有任何轻微的优势,选择>>=或反之亦然?(这适用于Intel或AMD硬件上的编译语言)

optimization machine-instruction

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

如何在套接字上设置do not fragment(DF)标志?

我试图设置使用UDP发送数据包的DF(不分段标志).

看看Richard Steven的书第1卷Unix网络编程; 套接字网络API,我无法找到如何设置它.

我怀疑我会用setsockopt()来做,但是在第193页的表格中找不到它.

请建议如何做到这一点.

c++ sockets udp packet

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

如何在Python中初始化嵌套字典

我正在使用Python v2.7字典,在另一个内部嵌套,如下所示:

def example(format_str, year, value):
  format_to_year_to_value_dict = {}
  # In the actual code there are many format_str and year values,
  # not just the one inserted here.
  if not format_str in format_to_year_to_value_dict:
    format_to_year_to_value_dict[format_str] = {}
  format_to_year_to_value_dict[format_str][year] = value
Run Code Online (Sandbox Code Playgroud)

在插入第二级字典之前用空字典初始化第一级字典似乎有点笨拙.有没有办法设置一个值,同时在第一级创建字典,如果还没有一个字典?我想像这样的东西,以避免条件初始化器:

def example(format_str, year, value):
  format_to_year_to_value_dict = {}
  add_dict_value(format_to_year_to_value_dict[format_str], year, value)
Run Code Online (Sandbox Code Playgroud)

另外,如果内部字典本身应该初始化为列表怎么办?

def example(format_str, year, value):
  format_to_year_to_value_dict = {}
  # In the actual code there are many format_str and year values,
  # not just the one inserted here.
  if not format_str …
Run Code Online (Sandbox Code Playgroud)

python dictionary nested initialization python-2.7

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

如何在OS X上取消设置env变量?

我正在研究一个makefile规则,并希望在递归调用make之前取消设置环境变量MAKEFILES.在其他BSD系统上,我这样做:

env -u MAKEFLAGS $(MAKE) $(SUBDIR_ARGS)
Run Code Online (Sandbox Code Playgroud)

在Linux上,我这样做:

env --unset=MAKEFLAGS $(MAKE) $(SUBDIR_ARGS)
Run Code Online (Sandbox Code Playgroud)

但是,这两种风格都不适用于Macintosh OS X Mavericks,不过,我希望其他地方使用的BSD风格也可以.

我通过BSD样式调用得到的错误是:

env: illegal option -- u
Run Code Online (Sandbox Code Playgroud)

如何在OS X上调用命令之前取消设置环境变量,为什么其他地方使用的BSD样式不起作用?

这是Mac的env手册页:

ENV(1)                    BSD General Commands Manual                   ENV(1)

NAME
     env -- set and print environment

SYNOPSIS
     env [-i] [name=value ...] [utility [argument ...]]

DESCRIPTION
     env executes utility after modifying the environment as specified on the command line.  The option name=value specifies an environmental variable, name, with a value of value.  The option `-i' causes env to completely ignore …
Run Code Online (Sandbox Code Playgroud)

macos porting environment-variables

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

如何在OS X上从std :: basic_ios获取文件描述符for clang?

我将一些代码移植到Darwin OS X,作为更改的一部分,我们从gcc转到clang编译器.

在代码中,有一个功能可追溯到2005年,并在互联网上发布了几个地方.它为几个不同的旧版GCC提供了功能,我已经删除了它提供的最后一个版本,v3.4.0或更高版本.代码取决于两个GCC特定类:__gnu_cxx::stdio_filebuf__gnu_cxx::stdio_sync_filebuf.

//! Similar to fileno(3), but taking a C++ stream as argument instead of a
//! FILE*.  Note that there is no way for the library to track what you do with
//! the descriptor, so be careful.
//! \return  The integer file descriptor associated with the stream, or -1 if
//!   that stream is invalid.  In the latter case, for the sake of keeping the
//!   code as similar to fileno(3), errno …
Run Code Online (Sandbox Code Playgroud)

c++ macos porting iostream file-descriptor

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