我还在学习C++并试图理解它.我正在查看一些代码并看到:
point3(float X, float Y, float Z) :
x(X), y(Y), z(Z) // <----- what is this used for
{
}
Run Code Online (Sandbox Code Playgroud)
位于构造函数参数旁边的"x(X),y(Y),z(Z)"是什么意思?
我正在开发一个带有DSP和ARM的系统.在ARM上有一个Linux操作系统.我有一个DSP向ARM(Linux)发送数据 - 在Linux中有一个内核模块,它读取从DSP接收的数据.内核模块正在唤醒以使用DSP与ARM之间的硬件中断来读取数据.
我想编写一个用户空间应用程序,每次有来自DSP的新数据时,它将从内核空间(内核模块)读取数据.
问题是:
有什么方法可以做到这一点,从内核到用户空间的软件中断,或者每隔10ms从用户空间轮询(用内核读取已知的内存地址).
知道:
按照我之前的问题:为什么`strchr`似乎与多字节字符一起工作,尽管手册免责声明?,我发现这strchr是一个糟糕的选择.
相反,我正在考虑使用strstr寻找单个字符(不是多字节char):
const char str[] = "This string contains é which is a multi-byte character";
char * pos = strstr(str, "é"); // 'é' = 0xC3A9: 2 bytes
printf("%s\n", pos);
Run Code Online (Sandbox Code Playgroud)
输出继电器:
é是一个多字节字符
这是我所期望的:我的多字节字符的第一个字节的位置.
先验,这不是规范使用,strstr但似乎运作良好.
这种解决方法安全吗?你能想到会导致错误的任何副作用或特殊情况吗?
[编辑]:我应该确切地说我不想使用wchar_t类型,我处理的字符串是UTF-8编码的(我知道这个选择可以讨论,但这是一个无关紧要的辩论)
我正在通过10GB MPLS网络对IPTV第3层组播VPN进行故障排除.
只有某些高清频道正在经历严重的冻结和拼接; 所有其他SD和HD频道都可以正常工作.我们的IPTV视频监控设备通过监控连续性计数器来检测和报告丢包.我问过我们所有的设备供应商并阅读我能找到的每个.pdf,似乎没有人确切知道:
我gcc用以下代码发现了一个奇怪的行为:
#include <stdio.h>
#include <string.h>
int main(void)
{
const char str[] = "This string contains é which is a multi-byte character";
const char search[] = "?";
char * pos = strstr(str, search);
printf("%s\n", pos);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译器会发出警告:
$ gcc toto.c -std=c99
toto.c: In function ‘main’:
toto.c:8:18: warning: initialization discards ‘const’ qualifier
from pointer target type [enabled by default]
Run Code Online (Sandbox Code Playgroud)
但如果我改变以下内容search:
const char search[] = "é";
Run Code Online (Sandbox Code Playgroud)
同样的编译没有任何警告:为什么?
注意:如果我交换?,我有完全相同的行为é:如果字符in search不存在str,我会收到警告.
是否有任何开源替代品ffmpeg,并VLC以实时视频转码,从HTTP数据流将RTMP或其他?
ffmpeg 导致我的 CPU(AMD 4.0GHZ 8Core)100% 加载,只有 8 个 SD 流。
感谢帮助。
附注。我想我不需要转码我的视频,我也可以使用 http 视频代理之类的东西进行流式传输。源是 HTTP 流格式,我也在 Linux 下。
我正在一个项目中工作,需要Access units在H.264原始基本流中删除一些,例如删除4个访问单元并播放剩余的视频.
为此,我将Access unit Delimiter(NAL Unit Type:9)作为边界Access Unit并切断视频,但视频以丢包结束.但是如果我把Sequence parameter set(NAL Unit type :7)作为边界,结果视频播放没有任何丢包.
有人请帮我解决这个问题:我应该在哪里剪切视频?
我正在尝试编译导入此BiTStream 文件的项目.
GCC输出以下错误:
警告:堆栈使用可能无限制[-Wstack-usage =]
实际上,在编译命令行(通过CMake生成)中,我有:
-Wstack使用率= 2048
我想对项目的其余部分保留此警告,但为此特定文件禁用它.
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wswitch-enum"
#pragma GCC diagnostic ignored "-Wformat"
#pragma GCC diagnostic ignored "-Wswitch-default"
#pragma GCC diagnostic ignored "-Wunused-parameter"
#pragma GCC diagnostic ignored "-Wstack-usage"
#include <bitstream/mpeg/psi/descs_print.h>
#pragma GCC diagnostic pop
Run Code Online (Sandbox Code Playgroud)
但海湾合作委员会仍然抱怨:
警告:'#pragma GCC诊断'之后的未知选项[-Wpragmas]
#pragma GCC诊断警告"-Wstack-usage"
请注意,其他警告已正确禁用.
是否有特定的synatx Wstack-usage?
从:
man strchr
Run Code Online (Sandbox Code Playgroud)
char*strchr(const char*s,int c);
strchr()函数返回指向字符串s中第一次出现的字符c的指针.
这里"字符"表示"字节"; 这些函数不适用于宽字符或多字节字符.
如果我尝试搜索多字节字符é(0xC3A9在UTF-8中):
const char str[] = "This string contains é which is a multi-byte character";
char * pos = strchr(str, (int)'é');
printf("%s\n", pos);
printf("0x%X 0x%X\n", pos[-1], pos[0]);
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
这是一个多字节字符
0xFFFFFFC3 0xFFFFFFA9
尽管有警告:
警告:多字符字符常量[-Wmultichar]
所以这是我的问题:
strchr用于多字节字符?(它似乎工作,只要int类型足够大,包含你的多字节,最多4个字节)0xFFFFFF?我在嵌入式目标上工作,并希望定义内存池.
内存地址表示为void*.但是在特定情况下,这些地址被缓存,我想要解除它们以直接获得"真实"硬件地址.
我想定义开头的地址memory_area(这只是一个标记):
#define UNCACHE_MASK 0xABCDEF12UL // Value of the mask to apply
extern uint32_t memory_area; // Global, defined somewhere else
const void * virtual_address = &memory_area; // OK
const void * real_address =
(void*)(virtual_address | UNCACHE_MASK); // guilty line
Run Code Online (Sandbox Code Playgroud)
不幸的是,GCC不会让我这样做:
error: invalid operands to binary | (have 'const void *' and 'long unsigned int')
Run Code Online (Sandbox Code Playgroud)
无奈之下我试过:
const void * real_address =
(void*)(((uint32_t)virtual_address) | UNCACHE_MASK); // guilty line
Run Code Online (Sandbox Code Playgroud)
徒然:
error: initializer element is not constant …Run Code Online (Sandbox Code Playgroud)