小编jco*_*der的帖子

8位微控制器的线性插值

我需要使用PIC汇编语言在8位PIC单片机(特别是16F627A,但这应该无关紧要)上的两个值之间进行线性插值.虽然我在这里寻找的算法与实际代码一样多.

我需要取8位起始值,8位结束值和两位之间的位置(当前表示为8位数0-255,其中0表示输出应该是起始值,255表示它应该是最终值值,但如果有更好的方法来表示,则可以改变)并计算插值.

现在PIC没有除法指令所以我可以编写一个通用除法例程并在每一步有效地计算(BA)/(x/255)+ A但我觉得有可能有​​一个更好的方法来做到这一点一个微控制器,而不是我用c ++在PC上做的方式

有没有人有任何建议在这个硬件上有效地实现这个?

algorithm microcontroller assembly

9
推荐指数
1
解决办法
5061
查看次数

是否需要在win32程序中调用DispatchMessage?

Win32程序通常有一个消息循环,循环调用GetMessage或PeekMessage,然后调用DispatchMessage将消息分派到相关窗口的窗口.

但有没有必要真正做到这一点?我可以直接在消息循环中查看MSG对象并执行其中所需的操作而无需调用DispatchMessage吗?我说的是我有一个窗口而没有其他窗口控件的情况,例如,如果窗口仅用作direct3d显示窗口,那么消息将始终指向唯一的窗口.

大多数情况下,我只是好奇,但也可能导致我的代码的某些方面也更清晰.

windows winapi

9
推荐指数
1
解决办法
1904
查看次数

用D语言释放资源

当在c中使用的Direct3D ++我可以写例如"立方"类,即包含"ID3D11Buffer*vertexBuffer_",并确保该立方体对象的析构调用vertexBuffer _->推出().

我可以有一个包含"unique_ptr cube_"对象的"Scene"类.所以我知道当我删除我的场景时,立方体将被删除,因此将调用它正在使用的D3D资源上的释放.

在DI中无法做到这一点.我可以编写析构函数,但我不知道它们什么时候会被调用.如果GC不需要内存,则可能永远不会被调用...

那么在D中处理这类事情的最佳方法是什么?我可以添加一个"免费"的成员函数,每一个释放所有的它自己的资源,并呼吁它拥有的任何对象的"自由"的对象,但是这似乎是一个容易出错的手动操作,并从C++是一种倒退.

在D中有没有更好的方法来处理这类事情?

direct3d d direct3d11

8
推荐指数
1
解决办法
596
查看次数

编译器会优化静态函数的未使用参数吗?

我有一组被所有声明的函数static和fastcall.他们中的大多数都使用指向结构的指针,该结构或多或少地起到了thisC++ 的作用.一些函数在结构中不需要任何东西,但为了统一起见,我想要传递指针.编译器是否会注意到该参数未被使用并且省略了为其分配寄存器?

c c++ compiler-construction compiler-optimization

8
推荐指数
1
解决办法
1967
查看次数

在D中将临时字符数组转换为字符串

我正在学习D语言(我很熟悉C++)...我想做一些Windows特定的东西,所以我写这个只是为了试用API:

import core.sys.windows.windows;
import std.stdio;

string name()
{
    char buffer[100];
    uint size = 100;

    GetComputerNameA(&buffer[0], &size);

    return buffer;
}

void main()
{
    writeln(name());
}
Run Code Online (Sandbox Code Playgroud)

我收到了回复声明:

test.d(11): Error: cannot implicitly convert expression (buffer) of type char[100] to string
Run Code Online (Sandbox Code Playgroud)

好吧,在C++中,它会调用构造函数来创建一个字符串.它表示隐式,所以让我们用C样式转换:return (string)buffer;.

test.d(11): Error: C style cast illegal, use cast(string)buffer
Run Code Online (Sandbox Code Playgroud)

好的,我记得,语法不同.

return cast(string)buffer;
Run Code Online (Sandbox Code Playgroud)

现在它编译但我只是垃圾.

我认为那是因为它将字符串中的指针存储到临时缓冲区.我不想这样做,我想把字符复制成一个字符串,但我很烦人,我似乎无法找到如何做到这一点?

所以问题:

  1. 如何从正确分配存储的char数组构造实际字符串?(复制字符)

  2. 像这样分配一个随机大小的缓冲区并转换为字符串似乎很难看.在D中有没有正确的方法呢?(我正在谈论一般性问题,不是专门针对此API,以防万一有另一个API来获取计算机名称).

  3. 如果在手册中回答了其中任何一个,我应该在哪里查找详细信息?

感谢您的帮助和建议.

d

8
推荐指数
2
解决办法
681
查看次数

允许用户编辑css是否安全?

我有一个Web应用程序,我希望允许最终用户通过上传自己的css文件来自定义网站的外观.

这有什么安全问题吗?我看不到任何明显的东西,但想到我会问,如果有什么我错过了.

css security

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

win32 CreateFile2 api调用的目的是什么?

他们在Windows 8中添加了一个新的API调用,CreateFile2 据我所知,它与现有CreateFile函数完全相同,只是它的参数打包方式有些不同.

已经添加了什么来实现这一点,因为我在文档中看不到任何内容.

winapi windows-8

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

继承自std :: vector

这里有很多答案说不要从std :: vector继承,例如这个问题.我理解原因并同意他们.但是在这里第4.4.1.2节Bjarne Stroustrup本身继承自std :: vector以添加范围检查.

这是一个特例,或者只是在那种情况下可以做的事情,或者他真正不应该做的事情:P

c++

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

c ++中"main"线程的id

在c ++中有没有办法获得"主"程序线程的id?

我看到它std::this_thread::get_id()获取当前正在执行的线程的id但我需要main原始程序线程的id .我没有看到任何功能来获得这个.

原因是我有一些非线程安全的内部函数,只能在应用程序的原始线程上调用,所以为了安全我想做: -

assert(std::this_thread::get_id() == std::main_thread::get_id());
Run Code Online (Sandbox Code Playgroud)

但是当然没有这样做的功能,我看不出任何方法来获取这些信息.

c++ multithreading c++11

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

更好地改变制服或改变计划?

使用webgl我需要执行3次传递来渲染我的场景.每个过程都运行相同的几何体和着色器,但对于某些制服和纹理具有不同的值.

我似乎有两个选择.拥有一个"程序"并为每次传递设置所有制服和纹理.或者有3个"程序",每个程序包含相同的着色器,并为每个程序设置所有必要的制服/着色器,然后只需为每个过程切换程序.这意味着我将为每次传递执行一次useProgram调用,而不是每次传递的man setUniform调用.

这第二种技术可能会更快,因为它会避免很多setuniform调用,或者正在改变程序非常昂贵吗?我已经完成了一些试验,但是由于我目前看到的几何形状非常简单,我认为没有任何性能上的差异,因为设置成本压倒了任何差异.

是否有理由更喜欢一种技术而不是另一种?

webgl

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