小编Beg*_*ner的帖子

重复使用嵌套循环,无需复制和粘贴

假设我有这个嵌套循环

for (int a=1; a<MAX_A; ++a)
  for (int b=1; b<MAX_B; ++b)
    for (int c=1; c<MAX_C; ++c)
    {
       do_something(a, b ,c);
    }
Run Code Online (Sandbox Code Playgroud)

我在代码的各个部分重用了这个循环,改变了函数do_something.每次前三行重写都很无聊.例如,在python中我会创建一个生成器来返回迭代器(1, 1, 1), (1, 1, 2), ...或类似的东西itertools.product.

在c ++中,我唯一想到的解决方案就是定义一个宏.还有更好的东西吗?

c++ macros foreach loops nested-loops

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

如何使用驻留在生成的Makefile中的INSTALL_ROOT?

qmake 生成以下(以及其他)安装目标的规则:

-$(INSTALL_PROGRAM) "$(TARGET)" "$(INSTALL_ROOT)/$(TARGET)"
Run Code Online (Sandbox Code Playgroud)

我不能INSTALL_ROOT*.pro文件中设置这样的东西

isEmpty(INSTALL_ROOT) {
    INSTALL_ROOT=/usr
}
Run Code Online (Sandbox Code Playgroud)

因为INSTALL_ROOT在某种程度上是生成Makefile的本地.根据我发现到目前为止INSTALL_ROOT默认是空的.它可以像

INSTALL_ROOT=$HOME make install
Run Code Online (Sandbox Code Playgroud)

在调用make时,这很好.但是,我希望能够指定默认安装根/usr.我可以PREFIX按照这里的建议引入一个新变量.然后生成的规则看起来像(如果PREFIX设置为/usr)

-$(INSTALL_PROGRAM) "$(TARGET)" "$(INSTALL_ROOT)/usr/$(TARGET)"
Run Code Online (Sandbox Code Playgroud)

然而

INSTALL_ROOT=$HOME make install
Run Code Online (Sandbox Code Playgroud)

安装/home/<user_name>/usr/$(TARGET)不符合预期的目标.

因此设置INSTALL_ROOT为某个默认值将产生一致的行为,这比添加更好PREFIX,但如何INSTALL_ROOT*.pro文件中设置?

INSTALL_ROOT它应该被用于什么目的是什么?

qt qmake

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

对于 32 位和 64 位平台,与 int64_t 匹配的整数文字?

考虑下面的一段代码。是否有可以在 32 位和 64 位平台上编译的整数文字?

#include <iostream>
#include <cstdint>

void f(double)
{
    std::cout << "double\n";
}

void f(int64_t)
{
    std::cout << "int64_t\n";
}

int main()
{
    f(0L);  // works on 64-bit fails on 32-bit system
    f(0LL); // fails on 64-bit but works on 32-bit system

    f(int64_t(0));              // works on both, but is ugly...
    f(static_cast<int64_t>(0)); // ... even uglier

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

int64_tis long,0LL是不同类型的平台上,重载解析不喜欢它与double.

int64_tlong long(包括在 Windows x64 上)时,我们对0L …

c++ x86 integer x86-64 literals

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

Python中truncate(0)后的文件中的垃圾

假设有一个test.txt包含字符串的文件'test'.

现在,考虑以下Python代码:

f = open('test', 'r+')
f.read()
f.truncate(0)
f.write('passed')
f.flush();
Run Code Online (Sandbox Code Playgroud)

现在我希望现在test.txt包含'passed',但是还有一些奇怪的符号!

更新:截断后刷新没有帮助.

python

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

什么时候使用C作为面向对象的语言?

有很多优秀的答案如何用C模拟面向对象的概念.仅举几例:

什么时候使用这种模拟是合适的,而不是本地使用支持面向对象技术的语言?

高度相关:

c oop

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

什么是WIFEXITED,WEXITSTATUS等中的"W"的助记符?

什么是"W"的助记符,即"W"在以下宏中的含义:

int WIFEXITED (int status)
int WEXITSTATUS (int status)
int WIFSIGNALED (int status)
int WTERMSIG (int status)
int WCOREDUMP (int status)
int WIFSTOPPED (int status)
int WSTOPSIG (int status)
Run Code Online (Sandbox Code Playgroud)

另请参阅流程状态完成.

c libc

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

C中的结构和功能范围有什么区别?

考虑一下这段代码

   int main(void)
   {
       typedef struct {
           int i;
       } s;

       struct {
           s s;
       } t;

       return 0;
   }
Run Code Online (Sandbox Code Playgroud)

它汇编很好.现在来看看这一个

   int main(void)
   {
       typedef struct {
           int i;
       } s;

       s s;
       return 0;
   }
Run Code Online (Sandbox Code Playgroud)

这段代码不会编译 -

‘s’ redeclared as different kind of symbol.
Run Code Online (Sandbox Code Playgroud)

问题:为什么拥有"ss"是正确的; 作为结构内部的声明,但在函数内部有这个定义是不正确的?

c struct

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

在哪里设置java.net.preferIPv6Addresses = true

我已经搜索了许多启用IPv6的地方,以便拥有双栈机器IPv6.我发现很多人已回答设置java.net.preferIPv6Addresses = true,默认设置为false.

我想知道我应该在哪里进行这些更改,即在哪个文件中或者我必须编写一些Java代码来实现这些更改.

java ipv6

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

在python中选择一个随机列表元素

我正在尝试创建一个带有两个列表的函数,并从每个列表中随机选择一个元素.有没有办法使用random.seed函数?

python list

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

是否应该在 main 中的 return 语句之前释放内存?

考虑这个小程序:

int main(int argc, const char *argv[])
{
    int *i = new int;
    //do something with i, where i is involved all the time
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

作为一种良好的风格,并表明您实际上知道您必须释放分配在通常delete i;在 return 语句之前添加的堆上的内存。

但是如果离开会不会有什么坏处delete i;

更新:请不要在评论中互相指责。我确实知道,为了安全起见,就像良好的风格一样,我应该释放分配的内存。问题是,在这种特殊情况下是否可以安全地省略它。

c++ memory-leaks memory-management

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

标签 统计

c ×3

c++ ×3

python ×2

foreach ×1

integer ×1

ipv6 ×1

java ×1

libc ×1

list ×1

literals ×1

loops ×1

macros ×1

memory-leaks ×1

memory-management ×1

nested-loops ×1

oop ×1

qmake ×1

qt ×1

struct ×1

x86 ×1

x86-64 ×1