小编Sum*_*uma的帖子

bool运算符++和 -

今天在编写一些Visual C++代码时,我遇到了令我惊讶的事情.似乎C++支持bool的++(增量),但不支持 - (减量).这只是一个随机决定,还是有一些原因呢?

这编译:

static HMODULE hMod = NULL;
static bool once = false;
if (!once++)
    hMod = LoadLibrary("xxx");
Run Code Online (Sandbox Code Playgroud)

这不是:

static HMODULE hMod = NULL;
static bool once = true;
if (once--)
    hMod = LoadLibrary("xxx");
Run Code Online (Sandbox Code Playgroud)

c++ boolean increment

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

#include所有.cpp文件到一个编译单元?

我最近有理由使用常规的Debug和Release配置来处理一些Visual Studio C++项目,还有'Release All'和'Debug All',这是我以前从未见过的.

事实证明,项目的作者有一个ALL.cpp,其中#includes所有其他.cpp文件.*所有配置只构建一个ALL.cpp文件.它当然被排除在常规配置之外,并且常规配置不构建ALL.cpp

我只是想知道这是否是一种常见做法?它带来了什么好处?(我的第一反应是闻起来很糟糕.)

您可能会遇到哪些陷阱?我能想到的是,如果你的.cpps中有匿名命名空间,它们不再是那个cpp'私有',但现在也可以在其他cpps中看到了吗?

所有项目都构建了DLL,因此在匿名命名空间中存储数据不是一个好主意,对吧?但功能会好吗?

干杯.

c++ build-process build visual-studio

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

用scala替换List中的元素

如何使用不可变List替换索引元素.

例如

val list = 1 :: 2 ::3 :: 4 :: List()

list.replace(2, 5)
Run Code Online (Sandbox Code Playgroud)

replace scala

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

Scala 2.10中的字符串插值 - 如何插入String变量?

字符串插值在Scala启动Scala 2.10时可用

这是基本的例子

 val name = "World"            //> name  : String = World
 val message = s"Hello $name"  //> message  : String = Hello World
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法进行动态插值,例如以下(不编译,仅用于说明目的)

 val name = "World"            //> name  : String = World
 val template = "Hello $name"  //> template  : String = Hello $name
 //just for illustration:
 val message = s(template)     //> doesn't compile (not found: value s)
Run Code Online (Sandbox Code Playgroud)
  1. 有没有办法"动态"评估像这样的字符串?(或者它本身是错误的/不可能的)

  2. 究竟是s什么?它不是def方法(显然它是一个方法StringContext),而不是一个对象(如果它是,它会抛出一个不同于我认为未找到的编译错误)


scala string-interpolation scala-2.10

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

在C++中使用接口的性能损失?

在C++中使用接口(抽象基类)时是否存在运行时性能损失?

c++ performance abstract-class virtual-functions

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

如何编写无锁结构?

在我的多线程应用程序中,我看到其中存在严重的锁争用,从而阻碍了跨多个核的良好可伸缩性.我决定使用无锁编程来解决这个问题.

如何编写无锁结构?

multithreading multicore lock-free

36
推荐指数
8
解决办法
9848
查看次数

struct/class中静态常量的奇怪未定义符号

要么我非常疲倦,要么发生一些我不知道的奇怪事情,因为下面的代码在链接时导致Foo :: A和Foo :: B的未定义符号.这可以从一个更大的项目中尽可能地减少,但显示了我正在看的内容的本质.

#include <algorithm>

struct Foo
{
    static const int A = 1;
    static const int B = 2;
};

int main()
{
    return std::min(Foo::A, Foo::B);
}
Run Code Online (Sandbox Code Playgroud)

没有std :: min函数模板它工作正常,即只返回Foo :: A. 在类/结构之外定义静态int时也很好(在这个简单的例子中是全局的).但是,只要他们像这样,链接器就找不到它们.

有人能解释发生了什么吗?

c++ initialization definition static-members undefined-symbol

32
推荐指数
1
解决办法
9959
查看次数

为什么x86寄存器的命名方式如何?

例如,累加器被命名EAX,并且在调用指令指针时IP.我也知道有些字节叫做CLDH.我知道所有名字都必须有一个约定,但它是什么?

x86 assembly history naming

23
推荐指数
5
解决办法
3882
查看次数

c ++ 14中std :: string的运算符后缀

我安装了Clang 3.4,并为字符串文字""s测试后缀运算符.

#include <string>

//1. using namespace std; // without compile error.
//2. using std::operator ""s; // or without it compile error, too.
// for success compiles, need 1. or 2. line.

int main()
{
    auto s = "hello world"s; 
}
Run Code Online (Sandbox Code Playgroud)

如果我评论1和2,我得到编译错误.但我知道在大项目中1.方法很糟糕,2.方法很陌生.

QA:我是否可以使用运营商"" S没有任何文字using namespace stdusing std::operator ""s

c++ c++11 c++14

22
推荐指数
1
解决办法
4398
查看次数

转义字符串作为正则表达式传递

我想创建一个函数,创建正则表达式匹配输入时给定的任意字符串.例如,当我用123$它喂它时它应该按字面意思匹配"123$"而不是123 字符串的末尾.

def convert( xs: String ) = (xs map ( x => "\\"+x)).mkString                 

val text = """ 123 \d+ 567 """                                                
val x = """\d+"""                                                            
val p1 = x.r                                                                 
val p2 = convert(x).r                                                        

println( p1.toString )                                                       
  \d+ // regex to match number                                               

println( ( p1 findAllIn text ).toList )                                      
  List(123, 567) // ok, numbers are matched                                  

println( p2.toString )                                                       
  \\\d\+ // regex to match "backshash d plus"                                

println( ( p2 findAllIn text ).toList …
Run Code Online (Sandbox Code Playgroud)

regex scala

21
推荐指数
2
解决办法
9433
查看次数