小编Lun*_*din的帖子

Qt QPushbutton图标上方的文字

当我使用Icon创建QPushButton时,它默认显示图标右侧的文本.有没有办法让文字显示在图标下面?

qt

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

写简单添加十六进制和十进制数的约定

即使是一个老朋友,我担心我不再(完全)完全掌握在C中解析常量.下面的第二个1行无法编译:

int main( void ) { return (0xe +2); }
int main( void ) { return (0xe+2); }
Run Code Online (Sandbox Code Playgroud)

$ gcc -s weird.c

weird.c: In function ‘main’:
weird.c:1:28: error: invalid suffix "+2" on integer constant
int main( void ) { return (0xe+2); }
                           ^
Run Code Online (Sandbox Code Playgroud)

根据C11标准条款6.4.4.2,编译失败的原因可能是0xe + 2被解析为十六进制浮点常量.我的问题是,是否存在在C中编写十六进制和十进制数的简单加法的约定,我不喜欢在解析时依赖于空格.

这是使用gcc版本5.4.0 20160609(Ubuntu 5.4.0-6ubuntu1~16.04.9).在预处理(-E)之后停止编译显示编译失败发生在gcc而不是cpp中.

c parsing gcc c99

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

编译时Caffe没有看到hdf5.h

我在Python上安装Caffe Deep Learning Framework时遇到了麻烦:

当我make在caffe目录运行命令时,它说

hdf5.h:没有这样的目录

我已经完成的步骤:

如果有人能帮助我,我将不胜感激.

错误信息:

CXX src/caffe/util/hdf5.cpp
in file include from src/caffe/util/hdf5.cpp:1:0:
./include/caffe/util/hdf5.hpp:6:18: fatal error: hdf5.h: No such file or directory
compilation terminated 

Makefile:572 recipe for target '.build_release/src/caffe/util/hdf5.o'       
failed Make:*** [.build_release/src/caffe/util/hdf5.o] Error 1
Run Code Online (Sandbox Code Playgroud)

python deep-learning caffe

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

什么是C++中的不确定行为?它与未定义的行为有什么不同?

C++中不确定行为和未定义行为之间有什么区别?此分类是否也适用于C代码?

c c++

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

变量宏,零参数

我正在研究一个调用宏,

#define CALL(f,...) FN(f)->call((ref(new LinkedList()), __VA_ARGS__))
Run Code Online (Sandbox Code Playgroud)

在被叫时,

CALL(print,2,3,4,5);
Run Code Online (Sandbox Code Playgroud)

将2 3 4 5添加到链接列表(,重载以执行此操作)并调用print,其中需要链接列表按预期工作,但有些调用不需要参数,

CALL(HeapSize);
Run Code Online (Sandbox Code Playgroud)

它仍然需要一个链接列表,但是一个空的,上面不起作用,我试图想出一个宏,它可以使用任何一种风格吗?

编辑:挖掘gcc文档我发现在VA_ARGS之前添加## 会删除,当没有参数但是我无法嵌套宏时,

CALL(print,CALL(HeadSize));
Run Code Online (Sandbox Code Playgroud)

如果我分离它的工作调用,这会导致CALL未定义错误

c++ gcc c-preprocessor variadic-macros

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

退出前我应该释放内存吗?

因错误而退出程序时,我应该释放所有的mallocated内存吗?

something = (char**) malloc (x * sizeof(char*));
for (i = 0; i < x; i++)
    something[i] = (char*) malloc (y + 1);

...

if (anything == NULL) {
   printf("Your input is wrong!");
   // should I free memory of every mallocated entity now?
   exit(1);
} 
else {
   // work with mallocated entities
   ...
   free(something); // it must be here
   system("pause);
}
Run Code Online (Sandbox Code Playgroud)

c malloc free dynamic-allocation

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

异步Mysql连接器

是否存在可以在C或C++应用程序中使用的Mysql的任何异步连接器?我正在寻找可以插入用Boost.Asio编写的反应器模式的东西.

[编辑:]不能在线程中运行同步连接器.

c c++ mysql asynchronous boost-asio

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

在不支持它的系统中“产生负零”是什么意思?

C17 6.2.6.2/4说:

如果实现不支持负零,则未定义&,|,^,〜,<<和>>运算符的行为,其操作数会产生这样的值。

如果我有一个2的补码系统,则它不支持负零。并且它始终利用二进制数的所有可能组合来表示一个值。因此,无论使用哪种按位运算,都不可能产生负零。那么这段文字是什么意思呢?

我认为这部分是指具有1的补码或带符号幅度的系统,该系统不支持负零,而是使用填充位或陷阱表示。它是否正确?

c signed bitwise-operators twos-complement language-lawyer

19
推荐指数
2
解决办法
1524
查看次数

动态内存访问仅适用于函数内部

此问题旨在用作此常见问题解答的规范副本:

我在一个函数内动态分配数据,一切运行良好,但只在分配发生的函数内部.当我尝试在函数外部使用相同的数据时,我会遇到崩溃或其他意外的程序行为.

这是一个MCVE:

#include <stdlib.h>
#include <stdio.h>

void create_array (int* data, int size)
{
  data = malloc(sizeof(*data) * size);
  for(int i=0; i<size; i++)
  {
    data[i] = i;
  }

  print_array(data, size);
}

void print_array (int* data, int size)
{
  for(int i=0; i<size; i++)
  {
    printf("%d ", data[i]);
  }
  printf("\n");
}

int main (void)
{
  int* data;
  const int size = 5;

  create_array(data, size);
  print_array(data, size);  // crash here

  free(data);
}
Run Code Online (Sandbox Code Playgroud)

每当print_arraycreate_array函数内部调用时,我得到预期的输出0 1 2 3 4 …

c malloc parameter-passing pass-by-value dynamic-memory-allocation

18
推荐指数
1
解决办法
1834
查看次数

C23 中 int main() 和 int main(void) 等价原型吗?

C23 在函数声明符中引入了新的语义:

\n
\n

6.7.6.3 函数声明符

\n

[...]

\n

13\xc2\xa0\xc2\xa0\xc2\xa0对于没有参数类型列表的函数声明符:效果就像是使用由关键字 组成的参数类型列表进行声明void。函数声明符提供函数的原型。

\n
\n

这似乎意味着具有空参数列表的函数定义可以等效地用()or编写(void)

\n

然而,该函数似乎并不能保证这种main等价性:

\n
\n

5.1.2.2.1 程序启动

\n

程序启动时调用的函数名为main。该实现没有声明该函数的原型。它的返回类型应为int且不带参数定义:

\n
int main(void) { /* ... */ }\n
Run Code Online (Sandbox Code Playgroud)\n

或带有两个参数(此处称为argcargv,但可以使用任何名称,因为它们对于声明它们的函数来说是本地的):

\n
int main(int argc, char *argv[]) { /* ... */ }\n
Run Code Online (Sandbox Code Playgroud)\n

或等效的或以某种其他实现定义的方式。

\n
\n

这似乎并不能保证 是 的int main() { /* ... */ }有效定义main,或者等效定义是否涵盖此变体?

\n
\n …

c language-lawyer function-prototypes c23

18
推荐指数
1
解决办法
2789
查看次数