小编vsz*_*vsz的帖子

"短"的C数字常量后缀

可能重复:
如何在C++中编写短文字?

short intC中的数值常量是否有后缀?有u,l,d,和f无符号,长,双和浮动,但我找不到任何为.

我做了一些非常低的杠杆比特插入,我需要2字节大小的数字常量.我工作的系统保证short ints是2个字节,所以这不是问题.它是嵌入式的,所以请不要打扰有关可移植性的建议.

c syntax

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

makefile中未定义的引用

好的,我已经阅读了大约10个教程,但我一直在收到错误,我有5个文件,main.cpp class.cpp,class.h和functions.cpp和functions.h.所有这些都使用来自不同对象的函数,这意味着functions.cpp中的函数使用classes.cpp中的对象.

我的makefile如下所示

CC = g++ -O2 -I./sdl/include -L.
LIBS = -lm -lSDL -lpthread -ldl
SRC = main.cpp
SDLF = SDLfunctions.cpp
CLASS = classes.cpp
CLASSH = classes.h
SDLFH = SDLfunctions.h

all: main

main: SDLfunctions.o Classes.o $(SRC)
    $(CC) -o $@ $(SRC) $(LIBS)

SDLfunctions.o: $(SDLFH) $(SDLF) $(CLASS) $(CLASSH)
    $(CC) -o $@ $(SDLF) $(LIBS)

Classes.o: $(CLASS) $(CLASSH) $(SDLF) $(SDLFH)
    $(CC) -o $@ $(CLASS) $(LIBS) 
Run Code Online (Sandbox Code Playgroud)

我一直告诉我它有未定义的引用.我错过了什么?

什么makefile输出

/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
/tmp/ccJG6yQA.o: In function `DrawEnemies(SDL_Surface*)':
SDLfunctions.cpp:(.text+0x3a7): undefined reference to …
Run Code Online (Sandbox Code Playgroud)

c++ linux makefile g++

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

C中的奇怪[1,2]样式数组

是否有一个非常早期的C"标准",其中以下对于二维数组的定义是合法的?

int array[const_x, const_y];
int array2[2, 10];
Run Code Online (Sandbox Code Playgroud)

我偶然发现了一些旧的遗留代码,它使用这个(并且只有这个)符号来表示多维数组.代码是,除了这个奇怪的,完全有效的C(并且令人惊讶地设计得很好).

由于我没有找到这之间的任意转换宏[,][][],我认为这不是恶作剧的形式,似乎从前原文作你的奥尔德C编译器,其接受了这一符号.还是我错过了什么?

编辑:如果它有帮助,它适用于嵌入式微控制器(atmel).根据我的经验,嵌入式编译器并不是标准兼容的众所周知的.

目前的编译器的代码按预期工作(只要它可以从函数的名称,描述和变量猜测),如果我改变这一切[,][][].

c

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

如何在存储速度很慢的系统上处理大型Qt资源文件?

嵌入式系统具有运行Qt Quick应用程序所需的硬件,具有良好的CPU和良好的GPU,但具有极慢的非易失性存储器.

由于GUI有很多图像,我有以下困境:

  • 如果我将图像放入qrc文件,它将被编译成可执行文件,因此应用程序加载速度非常慢.
  • 如果我按需将图像作为普通文件加载(并非所有图像都在每个菜单和对话框中都可见),只要打开这样的菜单或对话框,程序就会挂起一段时间,等待从闪存中加载图像.
  • 手动管理单个图像(例如,在手动编写的后台线程中)似乎太费劲了,所以我希望有一个更优雅的解决方案.

有没有一种很好的方法来使用Qt资源管理系统在后台加载资源?应该加载主GUI中使用的图像,同时启动画面显示一个很好的进度条,其余的可以在主应用程序启动后在后台静默加载.如果我可以有选择地加载并释放某些资源文件(在应用程序的某些状态下不需要一些资源文件,那么一个很好的补充就是如此,如果我可以释放一些内存那将会很好)

有没有一种优雅的方法来解决这个Qt资源系统,或者我是否必须手动管理我的所有图像?

c++ qt

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

QML错误"未知组件.(M300)"但代码有效

我想在QML应用程序中使用自定义字体,并且不必在每个文本字段中指定它,我使用本答案中建议的组件.

DefaultText.qmlstyles前缀下有一个qml.qrc位于文件夹中的前缀styles.

import QtQuick 2.0

Text {
    color: "black"
    font.family: myCustomFont.name
    font.bold: false
    font.italic: false
    font.pixelSize: 14
}
Run Code Online (Sandbox Code Playgroud)

我在其他地方使用它,在文件夹中PanelRight.qml的前缀下命名的qml Panelswidgets.一切都在相同之下qml.qrc.

import "qrc:/styles/styles"

Item
{
    // ...
    DefaultText { text: "xyz" }
}
Run Code Online (Sandbox Code Playgroud)

有趣的DefaultText是,带有"Unknown component.(M300)"消息的下划线标有错误.但是,我可以成功编译并运行我的应用程序,并正确显示自定义字体.然而,这很烦人,我有错误的一个长长的清单(我打算在很多地方使用它),并自动完成不工作.

我搜索了Qt论坛,这个问题在自定义插件的情况下被提及,我不使用.

qml

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

如何在QML中处理大量的瓷砖?

想象一个巨大的矩形网格填充瓷砖.单个图块不是很复杂,它们是包含少量形状的svg图像.

不同类型的瓷砖数量不是很大,我估计在低数百.然而,网格可能变得非常大,因此总瓦片的数量是巨大的(至少数万,甚至更多).

我必须能够平滑地水平和垂直地滚动网格,以及平滑地放大和缩小网格.我也必须能够跳到特定的位置.

如果我可以异步填充它,首先是实际可见的元素,然后是其余元素,这也是很好的.这意味着我首先必须在循环中添加行和列的表处理类不是最佳解决方案,因为起始位置不一定是左上角.

通过将图块中的项目的所有widthheight属性指定为缩放因子的倍数来简单地实现缩放.这svg不应该是一个问题,因为不同图像的数量不高,它应该能够被缓存.在不太可能的情况下svg成为瓶颈,我可以png在不同的分辨率中使用不同的s 组.

我尝试(或考虑)了以下方法:

  1. 使用SameGame示例的方法,动态创建QML对象(Component.createObject).如果对象的数量很少,但是对于大量对象来说非常慢,这是有效的.即使对象完全是空的,这种方法也需要很长时间.

  2. 使用Repeater内部a Flickable.该Flickable包含Grid,这是由一个人口Repater.的Grid,当然,是巨大的.此方法比动态创建对象更快,但随着切片数量的增长仍然效率低下.QML引擎跟踪每个项目,甚至是那些不可见的项目.缩放也很慢,因为每个项目的属性都会重新计算,而不仅仅是可见的属性.

  3. 用一个GridView.这看起来像乍一看的完美解决方案.在GridView继承Flickable,也需要照顾到仅渲染的是视图的范围内的内容.即使是具有数百万svg图像的测试用例运行速度也相当快,并且可以平滑地滚动和调整大小.只有一个问题:GridView只能水平或垂直滑动,但不能同时滑动.自2012年以来一直有关于此的功能请求,但它似乎仍然被忽略.

  4. QGraphicsView直接使用.它能够显示,滚动和缩放所需的元素数量,但它不是基于QML的.我的GUI的其余部分是QML,我只阅读有关组合QML和的恐怖故事QGraphicsView.我从未见过任何合理的例子.

还有哪些其他解决方案?一些可怕的黑客使用Javascript来添加和删除简单的行和列GridLayout(只有几行和大于可见区域的列),而它在一个Flickable?或者只是嵌入一个OpenGL窗口并手动绘制所有内容?

我希望这不应该是一项不可能完成的任务.20多年前为DOS和Windows 95编写的策略游戏可以处理这些数量的磁贴,同时还具有纹理和动画.

graphics qt qml

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

如果图像文件的内容在char数组中,如何使用cv :: imdecode?

我在缓冲区jpegBuffer中有一个jpeg图像.我试图将它传递给cv :: imdecode函数:

Mat matrixJprg = imdecode(Mat(jpegBuffer), 1);
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

/home/richard/Desktop/richard/client/src/main.cc:108: error: no matching function for call to ‘cv::Mat::Mat(char*&)’
Run Code Online (Sandbox Code Playgroud)

这是我填写jpegBuffer的方式:

FILE* pFile;
long lSize;
char * jpegBuffer;
pFile = fopen ("img.jpg", "rb");
if (pFile == NULL)
{
    exit (1);
}

// obtain file size.
fseek (pFile , 0 , SEEK_END);
lSize = ftell (pFile);
rewind (pFile);

// allocate memory to contain the whole file.
jpegBuffer = (char*) malloc (lSize);
if (jpegBuffer == NULL)
{
    exit (2);
}

// copy the file …
Run Code Online (Sandbox Code Playgroud)

c++ opencv

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

如何在 Qt 中将信号分配给 QMenu 而不是 QAction?

我想要一个没有孩子的菜单项。我有一个 QMenubar,在这个菜单栏中有一个 QMenu。要将其用作菜单,我必须将 QActions 放入其中,如果我单击 QMenu,它们就会出现。只有菜单,没有任何 QAction,怎么可能像 QAction 一样执行操作呢?

一种解决方法是拥有一个工具箱并将其伪装成菜单,但这会带来几个问题:

  • 这不是最干净的解决方案
  • 我必须手动关心在鼠标悬停时突出显示它,并且它不会独立于平台和用户设置。
  • 我无法在菜单栏中与儿童的正常菜单一起使用它。

user-interface qt

6
推荐指数
1
解决办法
3425
查看次数

初始化变量并同时指定存储地址:是否可能?

例如,在Atmel处理器的codevision编译器中,可以指定全局变量的存储地址

int a @0x100; // will place the variable at the address 0x100 in RAM
Run Code Online (Sandbox Code Playgroud)

当然,根据标准C,变量可以在声明时初始化

int a=42;
Run Code Online (Sandbox Code Playgroud)

但是,我没有发现任何可能同时做到这两点.int a @0x100 = 42或者int a = 42 @0x100;不工作,它们会导致编译器错误.

你可能会问为什么这么做很重要,因为人们可以这样做

int a @0x100;

int main()
{
    a = 42;
    //...
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我在EEPROM中有变量,我需要初始化它们,因为这是自动生成带有值的eeprom文件的唯一方法.我以后不能分配这些值,因为在这种情况下,它实际上会在程序的每个开始时将值写入eeprom.

c embedded avr

6
推荐指数
1
解决办法
7625
查看次数

一个非常简单的Qt程序的轻量级发布

为了让其他人能够运行一个简单的 Qt4 程序,您需要提供 12 MB 的 DLL。我最近升级到 Qt5,并惊讶地看到它增长到超过 41 MB。

这意味着,要发布一个简单的 GUI 程序,即使只是一个“Hello World”,并且仍然保持在 LGPL 下,它将超过 40 MB。

如果我想制作一个简单但有用的工具来(自由地)在 Internet 上分发,这是非常不方便的,因为它无法与其他使用更难开发的工具(例如 MS MFC 或甚至是 winapi,它设法控制在 100 kB 以下。

有没有可能制作一个简单的 Qt GUI 应用程序的轻量级、简约版本?

qt release-management

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

标签 统计

qt ×4

c ×3

c++ ×3

qml ×2

avr ×1

embedded ×1

g++ ×1

graphics ×1

linux ×1

makefile ×1

opencv ×1

release-management ×1

syntax ×1

user-interface ×1