小编Jab*_*cky的帖子

错误:'CLOCK_MONOTONIC' 未声明(首次在此函数中使用)

我尝试在 opencv 3.0 中构建基于像素强度比较的对象检测 (pico)代码,在构建时出现类似 error: 'CLOCK_MONOTONIC' undeclared (first use in this function) 的错误。谁能告诉如何克服这些问题?代码如下以及我得到的错误

float getticks()
{
    struct timespec ts;

    if(clock_gettime(CLOCK_MONOTONIC, &ts) < 0)
    {
        printf("clock_gettime error\n");

        return -1.0f;
    }

    return ts.tv_sec + 1e-9f*ts.tv_nsec;
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

picolrn.c:94:18: error: storage size of 'ts' isn't known
  struct timespec ts;
                  ^
picolrn.c:96:19: error: 'CLOCK_MONOTONIC' undeclared (first use in this function)
  if(clock_gettime(CLOCK_MONOTONIC, &ts) < 0)
                   ^
picolrn.c:96:19: note: each undeclared identifier is reported only once for each function it appears in …
Run Code Online (Sandbox Code Playgroud)

c c++ opencv

4
推荐指数
1
解决办法
8606
查看次数

无序的地图与矢量

我正在构建一个小的2D游戏引擎.现在我需要存储游戏对象的原型(所有类型的信息).一个容器最多我猜几千个元素都有唯一的键,没有元素将被删除或在第一次加载后添加.键值是一个字符串.

将运行各种线程,并且我需要向每个人发送一个键(或索引)并且具有该访问权限的其他信息(例如用于渲染过程的纹理或用于混合器过程的声音)仅可用于那些线程.

通常我使用向量,因为它们访问已知元素的速度更快.但我发现,如果我使用::at元素访问,无序地图通常也会保持恒定的速度.这将使代码更清晰,也更容易维护,因为我将处理更易理解的人造字符串.

所以问题是,与a vector[n]相比,访问a 与a 之间的速度差异unorderedmap.at("string")与他的收益相比可以忽略不计?

根据我的理解,在程序的不同部分访问各种地图,不同的线程只为我运行"名称"是一个大问题,速度差异不是那么大.但我太缺乏经验,无法确定这一点.虽然我发现有关它的信息似乎我无法理解我是对还是错.

感谢您的时间.

c++ unordered-map vector c++11

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

如何确定exe文件是.exe exe还是常规exe?

不是重复的问题: 如何判断win32应用程序是否使用.NET运行时.

如果给定的exe文件是.net exe文件或常规WIN32/WIN64 exe文件,我怎么能以编程方式找出?

问题不是询问正在运行的进程,而是关于exe文件,而且正如标签所示,不需要用VB.net或C#编写的解决方案.

我需要一个带有签名的函数,例如:

// return true if filename is a exe file for .Net
bool IsExeFileDotNet(LPCTSTR filename)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

c c++ windows winapi

4
推荐指数
3
解决办法
1208
查看次数

I/O重定向

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

int main()
{
   int i;
   for(i=1; i<=255; i++)
   {
       printf("%d %c\n",i,i);
   }
}
Run Code Online (Sandbox Code Playgroud)

嘿,我正在从i/o重定向工作,我从命令提示符输出ascii表,我完成了这个.

C:\New folder\practice> main.exe > temp.txt

C:\New folder\practice> type temp.txt
Run Code Online (Sandbox Code Playgroud)

按下输入后(类型后temp.txt)它只输出前26个数字.我的问题是为什么?

也有人可以解释我如何使用重定向将代码复制到文本文件中我知道如何使用FILE I/O.

c windows redirect ascii

4
推荐指数
1
解决办法
102
查看次数

本地分配的内存可以用于将来的用途吗?

代码

int main() {
  int test;
  cin >> test;
  while (test--) {
    int arr[100];
    arr[0] = 0;
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

假设test = 3.
对于第一个测试用例,数组在地址处分配1000.对于分配的第二个测试用例数组2000,依此类推.那么,如果我们有很多测试用例,我们之前分配的内存地址是否可以用于进一步分配?它会自动"释放()"我们之前分配的内存还是不能再使用?

c++

4
推荐指数
1
解决办法
105
查看次数

使用 LoadIcon 获取现代系统图标

我用于LoadIcon加载系统图标,例如“注意”标志。这工作正常,但这给了我旧的(我认为)Windows 7 外观的图标。

我的程序在 Windows 10 上运行。

代码:

hicon = LoadIcon(NULL, IDI_EXCLAMATION);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有没有办法让图标焕然一新?

另一方面MessageBoxMB_ICONEXCLAMATION标志显示新的图标。

c windows winapi icons

4
推荐指数
1
解决办法
1146
查看次数

printf() 和 fork() 产生的输出少于预期

我正在学习分叉进程和内存管理,我遇到了这段代码:

#include <stdio.h>
#include <libc.h>

int main() {
    for (int i = 0; i < 3; ++i) {
        printf("*");
        fflush(stdout);
        fork();
    }

    return 0;
}

Run Code Online (Sandbox Code Playgroud)

根据我的计算,它应该产生 7 个星星:初始进程打印一个星星(1 个星星),分叉,现在我们有 2 个进程,每个进程打印一个星星(1 + 2 = 3),然后它们分叉,所以我们有 4 个进程,每个人都会打印一颗星星,然后随着程序结束而死亡。

因此,我们应该得到 1 + 2 + 4 = 7 颗星。

然而,在某些运行中我只得到 6 星,如下面的屏幕截图所示:

在此输入图像描述

其他时候,当我运行该程序时,一切都很好,并且按预期获得了 7 颗星。

到目前为止,我已经在互联网上搜索过,但还没有找到类似的东西。调试也没有帮助。

那么,是什么导致了这种奇怪的行为以及如何解决它?

c fork process

4
推荐指数
1
解决办法
185
查看次数

为什么这段代码中复制构造函数被调用两次?

当我执行以下代码时,在和AAA之间调用了两次 的复制构造函数。boofoo

我只是想知道他们每个人的确切名字是什么时候。

代码:

#include <iostream>
#include <vector>

class AAA
{
    public:
        AAA(void)
        {
            std::cout<<"AAA ctor"<<std::endl;
        }

        AAA(const AAA& aRhs)
        {
            std::cout<<"AAA copy ctor"<<std::endl;
        }

        AAA(AAA&& aRhs) = default;

};

void foo(std::vector<AAA>&& aVec)
{
    std::cout<<"----foo"<<std::endl;
}

void boo(const AAA& a)
{
    std::cout<<"----boo"<<std::endl;
    foo({a});
    std::cout<<"----boo"<<std::endl;
}

int main(void)
{
    AAA a;
    boo(a);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

AAA ctor
----boo
AAA copy ctor
AAA copy ctor
----foo
----boo
Run Code Online (Sandbox Code Playgroud)

c++

4
推荐指数
1
解决办法
117
查看次数

所有者绘制仅在报表模式下用于ListView吗?

当ListView处于图标模式时,我想在ListView项周围绘制一个矩形,因此我开始阅读有关所有者绘制的文章,我认为这将解决我的问题。

但是,我还读到所有者绘图仅适用于报告模式!在较新版本的Windows(Windows XP和更高版本)下是否仍然如此?

如果仍然如此,那么还有另一种方法可以在ListView项周围绘制矩形吗?

c winapi listview ownerdrawn

3
推荐指数
1
解决办法
107
查看次数

c中“argv['A']”是什么意思?

我找到了以下代码,但我不明白它是什么或它是如何工作的。我以前只在 C 中见过argv[n](argv with an integer index) ,从来没有见过像argv['A'].

if(argc != 100) return 0;
if(strcmp(argv['A'],"\x00")) return 0;
if(strcmp(argv['B'],"\x20\x0a\x0d")) return 0;
printf("Stage 1 clear!\n");
Run Code Online (Sandbox Code Playgroud)

这是做什么的?你能解释一下为什么它有效吗?

c

3
推荐指数
1
解决办法
878
查看次数

标签 统计

c ×7

c++ ×5

winapi ×3

windows ×3

ascii ×1

c++11 ×1

fork ×1

icons ×1

listview ×1

opencv ×1

ownerdrawn ×1

process ×1

redirect ×1

unordered-map ×1

vector ×1