小编Fra*_*sco的帖子

FALSE和TRUE的奇怪定义,为什么?

在我正在研究的一些代码中,我遇到了对真相和虚假的奇怪的重新定义.我之前已经看过这样的事情,以便更加严格/确定地进行检查,但是这一点在我的脑海里有点奇怪,我想知道是否有人可以告诉我这些定义的原因是什么,请参阅下面我的评论旁边:

#define FALSE (1 != 1) // why not just define it as "false" or "0"?
#define TRUE (!FALSE)  // why not just define it as "true" or "1"?
Run Code Online (Sandbox Code Playgroud)

这个代码库还有许多其他奇怪的怪异.就像所有标准类型的重新定义一样:

#define myUInt32 unsigned integer // why not just use uint32_t from stdint?
Run Code Online (Sandbox Code Playgroud)

所有这些小"怪癖"让我觉得我错过了一些明显的东西,但我真的看不出这一点:(

注意:严格来说这是c ++代码,但它可以从'c'项目移植.

c c++ boolean

31
推荐指数
5
解决办法
6584
查看次数

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

如何在用C++编写的控制台应用程序中制作加载动画?

我正在使用c ++编写控制台应用程序,我需要使用ASCII字符来制作类似"loading.gif"的东西.

以下是我应该使用的字符列表:

  1. -
  2. \
  3. |
  4. /
  5. -

这些符号将通过循环来制作加载动画.

但是,当我写输出时,它变得像:

输出线1: - 输出线2: \ 输出线3: | 输出线4: / 输出线5: -

我需要像这样做:

输出线1: [这将一直被替换]

它永远不应该到第二行.

我怎么能用C++做到这一点?有什么样的替换功能吗?

c++ console animation replace loading

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

Dictionary.Keys.List()[i]是否对应于Dictionary.Values.ToList()[i]?

我有一个Dictionary数据类型.我的问题是,Dictionary.Keys.ToList()[i]总是对应Dictionary.Values.ToList()[i]?也就是说,以下测试总是会通过

public void DictionaryTest(int i, Dictionary<U,T> dict)
{
  var key = dict.Keys.ToList()[i];
  Assert.AreEqual(dict[key], dict.Values.ToList()[i]); 
}
Run Code Online (Sandbox Code Playgroud)

c# dictionary

7
推荐指数
2
解决办法
276
查看次数

Python中元组的时间复杂度

有关哈希(字典)和列表的类似问题,这里有一个很好的信息:http://wiki.python.org/moin/TimeComplexity

但我没有找到关于元组的任何信息.

访问时间

data_structure[i]
Run Code Online (Sandbox Code Playgroud)
  • 对于链表通常是O(n)
  • 字典是~O(1)

元组怎么样?它是O(n)喜欢链表还是O(1)喜欢数组?

python complexity-theory tuples

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

函数错误的多重定义,即使使用#if guard子句也是如此

我正在创建一个简单的UTIL.h文件包含我的C++项目的aplusb(int,int)函数.但是我无法编译,错误消息是关于`aplusb(int,int)'的多重定义.你能帮我纠正错误还是给我一些提示?

我附上了我的项目,供您参考.

文件UTIL.h

#ifndef UTIL_H_
#define UTIL_H_

int aplusb(int a, int b) {
    return a + b;
}

#endif /* UTIL_H_ */
Run Code Online (Sandbox Code Playgroud)

文件ClassA.h

#ifndef CLASSA_H_
#define CLASSA_H_

class ClassA {
public:
    ClassA();
    virtual ~ClassA();
private:
    int sum;
};

#endif /* CLASSA_H_ */
Run Code Online (Sandbox Code Playgroud)

文件ClassA.cpp

#include "ClassA.h"
#include "UTIL.h"

ClassA::ClassA() {
    // TODO Auto-generated constructor stub
    sum = aplusb(3,5);

}

ClassA::~ClassA() {
    // TODO Auto-generated destructor stub
}
Run Code Online (Sandbox Code Playgroud)

文件ClassB.h

#ifndef CLASSB_H_
#define CLASSB_H_

class ClassB {
public:
    ClassB();
    virtual ~ClassB();
private:
    int …
Run Code Online (Sandbox Code Playgroud)

c++

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

帮助设计树结构 - 功能和OOP之间的张力

我在前几天一直在学习f#,写了一个小项目,最后工作(当然是在SO的帮助下).

我正在努力学习尽可能惯用,这基本上意味着我试图不改变我的数据结构.这让我付出了很多努力:-)在我寻找惯用函数式编程时,我一直在尝试使用尽可能多的列表,元组和记录,而不是对象.但随后"praticality打败纯度",所以这次我用对象改写我的小项目.

我认为你可以给我一些建议,当然我对"良好的函数式编程设计"的想法还没有很好地定义.

例如,我必须修改树的节点,同时修改两个不同级别(L和L + 1)的状态.我已经能够在不改变数据的情况下做到这一点,但我需要很多"内部"和"辅助"功能,有累加器等等.由于需要以涉及的方式修改我的数据结构,因此能够清楚地表达算法的美妙感觉已经丢失.这在命令式语言中非常容易,例如:只需取消引用指向相关节点的指针,修改它们的状态并进行迭代.当然我没有正确设计我的结构,因此我现在正在尝试OOP方法.

我看过SICP,如何设计程序,并找到了C. Okasaki的论文("纯功能数据结构"),但SICP和HTDP的例子与我的做法相似,或者我可能不能完全理解它们.另一方面,论文对我来说有点太难了:-)

您如何看待我所经历的这种"紧张"?我是否过于严格地解释"永不变异数据"?你能给我一些资源吗?

在此先感谢Francesco

oop f# functional-programming

5
推荐指数
1
解决办法
1237
查看次数

在Windows 7中提升问题

我写了以下代码

#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/filesystem.hpp>
#include <boost/system/windows_error.hpp>

using namespace boost::system;

int main(){

    boost::asio::io_service io;
    boost::asio::deadline_timer t(io,boost::posix_time::seconds(5));
    t.wait();
    std::cout<<"hello world";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

1>LINK : fatal error LNK1104: cannot open file 'libboost_system-vc100-mt-gd-1_44.lib'
Run Code Online (Sandbox Code Playgroud)

我不知道如何以及做什么,你能解释一下发生了什么以及我可以采取哪些步骤来解决它?

c++ boost

5
推荐指数
1
解决办法
5792
查看次数

有选择地禁用第三方库的C++核心指南检查器

我想尝试在VS2015下的C++ 11/14项目中使用核心指南检查工具.

在我的代码中,我使用了许多来自Boost的库,它们会引发很多警告.我并不担心这些警告,因为Boost正在做很多非常聪明的工作,并且这些图书馆的编写目的不是为了符合准则,而这些准则主要是他们所遵循的.

但是在如此大量的警告中,我无法在我的代码中找到真正的问题(至少根据工具).

有没有办法抑制第三方代码的所有警告?也许在#including boost标题之前和之后有一些属性?

我从Visual C++团队博客阅读了这个页面,但我一直无法找到它.

c++ boost code-analysis visual-studio c++11

5
推荐指数
1
解决办法
557
查看次数

为通过 Nuget 安装的 C++ 库设置链接类型

这个答案提到了以下方法来链接到通过 Nuget 安装的 C++ 库的静态版本 [在这种情况下,“freeglut”]:

Project->Properties->Configuration Properties->Referenced Packages->freeglut->Linkage (select static) 
Run Code Online (Sandbox Code Playgroud)

使用 Visual Studio 2015 我找不到“参考包”。我拥有的对 Nuget 包的唯一明确引用是 packages.config xml 文件。如果我转到项目的“管理 Nuget 包”部分,我可以安装或卸载,但找不到包的任何详细信息。

我已经在 msdn 中搜索了文档,但所有页面都专门用于创建包,而我需要强调使用这种包的方式。有问题的包(Boost 单元测试框架)可以仅用于标头、静态或动态链接,我想知道我可以在哪里决定它。

也许我老了,但 Nuget 对我来说有点太神奇了......

更新

这就是我所看到的 - 您可以看到安装了 Nuget 包,特别是 boost,但是在配置属性下没有指向“引用包”的链接: Nuget 安装包和配置属性的屏幕截图,没有指向“参考包”的链接

为完整起见,VS 2015 Enterprise 的版本为:

14.0.25431.01 更新 3

我已经检查过,当我安装 Boost 测试包时,我同时获得了静态 (.lib) 和动态 (.dll) 链接版本,因为我的 VS 版本的文件存在于包文件夹中。

c++ visual-studio nuget nuget-package visual-studio-2015

5
推荐指数
1
解决办法
3330
查看次数