如何直接从C++访问GPU和声卡芯片的功能?
How to access functionality of both GPU & SoundCard Chip directly from C++?
我是一名学习C++并发编程的学生。我想知道如何通过我的C++程序访问图形卡芯片和声卡芯片的功能。有没有其他方法可以在不使用OpenGL、OpenAL等外部库的情况下连接各自的驱动程序和我的应用程序。你能通过一个例子简要描述一下解决方案吗。非常感谢。
const int * const function_name(const int * point) const;
//(1) (2) (3) (4)
第一个防止返回的指针被用来修改函数正在访问的任何数据。这很好(除非您想修改它),因为它可以防止对共享数据的意外修改。
第二个阻止调用者修改返回的指针。这在返回内置类型(如指针)时没有影响,在返回类类型时可能会很糟糕,因为它禁止移动语义。
第三个阻止函数修改数据。这是好的(在适当的时候),原因与第一个相同。
第四个防止函数修改对象的(不可变的)状态。这很好(在适当的时候),因为它允许在const
对象上调用函数,并使跟踪对象何时可能更改变得更容易。
const int * const Functiontwo(const int * const &) const;
// (5)
这里唯一的新事物是通过const
引用传递指针。这样做毫无意义;传递值提供了相同的语义,而且不那么冗长,可能更高效。对于较大或复制成本较高的类型,传递const
引用可能比传递值更高效。
一个微小的变化是通过const
值:
const int * const Functiontwo(const int * const) const;
// (6)
调用方对此不感兴趣(事实上,函数可以在不改变含义的情况下声明,也可以不声明);因此,把它放在声明上是没有意义的,只放在中。这意味着指针不能在函数中更改。这可能很好(正如声明局部变量const
一样),因为它可以使函数实现更容易遵循。
const
在成员函数之后意味着该函数不会修改父对象的状态:
struct foo
{
int bar() const; // does not modify the instance of foo
int & bar(); // might modify the instance of foo
};
在您的示例中,您的函数返回
int const * const
第一个const
表示,您所指向的int
不得更改;你告诉你的用户,他可以读取值,但不能修改它。这也与const
-正确性有关:
int const * foo() const; // can be used from const functions
int * foo(); // cannot be used from const function
第二个const
表示指针本身是const
,表示:
int * ptr = &a;
*ptr = 42; // valid
ptr = &b; // valid
int const * ptr = &a;
*ptr = 42; // INVALID
ptr = &b; // valid
int * ptr const = &a;
*ptr = 42; // valid
ptr = &b; // INVALID
int const * ptr const = &a;
*ptr = 42; // INVALID
ptr = &b; // INVALID
使指针本身const
作为函数的返回值几乎没有任何用处。
对于引用,C++03的一个快速指南是,如果你想修改对象,你想通过引用传递,并希望修改保持不变;如果您想修改对象但不希望修改继续(复制),则通过值传递,或者如果您传递的值是POD类型,则通过(异常!)传递;如果您不需要修改非POD类型,则可以通过常量引用,从而节省复制成本:
void foo(int & a); // changes to a are applied to a itself, no copy made
void foo(int a); // changes to a are applied to a copy of a, copy made
void foo(std::string const & a); // no changes allowed, no copy made
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- MacOS通过在莫哈韦"wchar.h"下破碎的自制啤酒发出叮当声
- 在卡萨布兰卡形成编码参数的列表
- 通过选项卡的文本设置QTabWidget顺序
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么 gcc 会产生这种奇怪的组件与叮当声?
- C++卡验证问题
- C++ OpenCV 卡尔曼滤波器构造函数错误
- 神经网络不学习.卡在50%
- 使用专用显卡进行 OpenGL 渲染时帧速率较低
- 在不使用系统的情况下从C++应用程序格式化 Linux 中的 SD 卡
- 在 std::getline 和 std::cin 期间卡在循环中
- 如何在 macOS 卡塔琳娜上解决此错误?
- PJSUA在两个或多个不同的音频声卡之间切换
- 如何在Raspberry Pi上使用C /libao/alsa通过USB声卡播放音频
- 控制QT中准备从声卡读取的字节数
- 如何直接从C++访问GPU和声卡芯片的功能?
- 我如何使用SDL在两个独立的声卡上播放声音?
- Win的Beep()功能会损坏我的声卡吗?
- 如何检查/更改声卡的采样率?