小编the*_*ive的帖子

“任务”指令的“最终”子句是否正确?

我试图了解如何使final子句实际工作,我在task链接中找到了以下代码示例。

#include <stdio.h>
#include <omp.h>

#define THRESHOLD 5

int fib(int n)
{
  int i, j;

  if (n<2)
  return n;

  #pragma omp task shared(i) firstprivate(n) final(n <= THRESHOLD)
  i=fib(n-1);

  #pragma omp task shared(j) firstprivate(n) final(n <= THRESHOLD)
  j=fib(n-2);

  #pragma omp taskwait
  return i+j;
}


int main()
{
  int n = 30;
  omp_set_dynamic(0);
  omp_set_num_threads(4);

  #pragma omp parallel shared(n)
  {
     #pragma omp single
     printf ("fib(%d) = %d\n", n, fib(n));
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当我通过调试检查 的值时n,我注意到即使条件为n <= THRESHOLD …

c++ parallel-processing openmp

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

C中的NULL比较错误

你能说我在这做什么错吗?当我设置url = NULL然后比较它是否有NULL无论是if(strlen(url)!=0)if(url!=NULL)程序崩溃还是由程序崩溃.我知道这很简单,但我做错了.

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

void main()
{
    char* url="/v1.0/fafffsdf"  ;
    url=NULL;
    printf("%s\n",url);
    if(url!=0)
    {
        printf("It ain't NULL\n");
    }
    else
    {
        printf("It's NULL\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

c

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

Cuda 错误未定义对“cufftPlan1d”的引用?

我正在尝试检查如何使用 CUFFT,我的代码如下

#include <iostream>


//For FFT
#include <cufft.h>

using namespace std;

typedef enum signaltype {REAL, COMPLEX} signal;


//Function to fill the buffer with random real values
void randomFill(cufftComplex *h_signal, int size, int flag) {

    // Real signal.
    if (flag == REAL) {
        for (int i = 0; i < size; i++) {
            h_signal[i].x = rand() / (float) RAND_MAX;
            h_signal[i].y = 0;
        }
    }
}

//Printing the random data in the buffer
void printData(cufftComplex *a, int size, char *msg) {

    if …
Run Code Online (Sandbox Code Playgroud)

c++ linux cuda makefile

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

Visual Studio 2013和Cmake?

我一直在使用2010年的项目.当cmake选择使用编译器Visual Studio 2010时,该项目是使用cmake构建的.现在我打算将整个项目设置移动到Visual Studio 2013.

所以,今天我安装了Visual Studio 2013年.但是,当我尝试使用cmake的建立为Visual Studio 2013的项目,在cmake的编译器列表中我看不到的Visual Studio 2013,最新是的Visual Studio 2012,Visual Studio中的任何编译器2012年win64,Visual Studio 2012 ARM.

Visual Studio 2013没有独占的编译器吗?相同的编译器是否适用于VS2012和VS2013?如果Visual Studio 2013确实有一个独占的编译器,为什么cmake找不到那个编译器?

谢谢.

cmake visual-studio visual-studio-2012 visual-studio-2013 cmake-gui

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

如何将由一系列十六进制值表示的枚举附加到QByteArray?

我有一些枚举,由以下方式的十六进制值系列表示:

enum someEnum
{
    NameA = 0x2121,
    NameB = 0x2223,
    NameC = 0x2020
};
Run Code Online (Sandbox Code Playgroud)

我想以下列方式将其中一个枚举附加到QByteArray:

QByteArray anArray;
anArray.append(NameA);
Run Code Online (Sandbox Code Playgroud)

但这种方法会产生警告

implicit conversion from 'int' to 'char' changes value from 8481 to 33.
Run Code Online (Sandbox Code Playgroud)

事实上,即使我做了以下事情:

anArray.append(static_cast<char>(NameA));
Run Code Online (Sandbox Code Playgroud)

它只附加0x21(十进制33).

我也尝试过以下方法:

const char * t = reinterpret_cast<char*>(NameA);
anArray.append(t, sizeof(t));
Run Code Online (Sandbox Code Playgroud)

但这会导致分段错误.

我当然可以在不丢失任何价值或崩溃或任何其他问题的情况下执行以下操作:

anArray.append(0x21);
anArray.append(0x21);
Run Code Online (Sandbox Code Playgroud)

但我不想那样,我想直接附加枚举.你能建议一个正确的方法吗?

非常感谢.

c++ qt hex qbytearray

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

错误使用scanf

你能跟我说下面代码中的错误吗?

    char* line=""; 

printf("Write the line.\n");
scanf("%s",line);
printf(line,"\n");
Run Code Online (Sandbox Code Playgroud)

我试图从控制台获取一行作为输入.但每次使用"scanf"时程序崩溃.我不想使用任何标准,我完全想避免使用cin或cout.我只是想学习如何使用scanf()将整行作为输入.

谢谢.

c c++ scanf

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

将十六进制数解析为数组

我有一个变量char* etag="8a964ee2a5e88be344f36c22562a6486";.

如何将其转换为数组byte,byte实际上在哪里typedef unsigned char byte

c

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

在 QTableView 上单击鼠标左键即可获取行和列?

我在一个QTableView. 现在我想跟踪用户按下鼠标左键一次的图像,我想跟踪它,因为我将在更大的窗口中准确地显示该图像。我怎样才能做到这一点?我的意思是如何获取用户按下鼠标左键一次的图像的行和列索引?

我在 QTableView 中看不到任何直接的clicked()信号,那么给我 QTableView 的行或列的工具是什么?

编辑:我想我还应该提到我曾经QStandardItemModelQTableView. 首先,我设置模型的行和列,然后在 a 中输入每个QImage类型项(我将其转换QImageQIconQStandardItem,然后将其放入QStandardItemQStandardItemModel一旦QStandardItemModel设置或填充,我将放入QTableView.

谢谢。

c++ qt qtableview

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

如何检测Qt中是否按下了两个鼠标按钮?

现在我能够检测到何时只点击了一个按钮.但我想检测两者何时被压在一起.目的是从QTableView中选择一些项目.我试图以这样一种方式选择它们:当一个项目上的左键被按下而右键已经被按下时,该项目将被选中.

以下代码仅显示单击右键的消息,但未显示两个按钮都被单击.如何检测何时单击它们?

bool MainWindow::eventFilter(QObject* obj, QEvent *ev)
{
    if(obj = ui->listOfImages->viewport())
    {
        QMouseEvent * mouseEv = static_cast<QMouseEvent*>(ev);
        if(mouseEv->buttons() == Qt::RightButton)
        {
            qDebug()<<"Right Button clicked!";
            if(mouseEv->buttons() == Qt::LeftButton)
            {
                qDebug()<<"Both button clicked!";
                return QObject::eventFilter(obj,ev);
            }
        }
    }
    return QObject::eventFilter(obj,ev);
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

c++ qt mouseevent

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

从lambda表达式返回布尔值时出错

bool markersFormRectangle = [](std::vector<cv::Point2f> markerCoords) {
  cv::Point2f center(
    (markerCoords[0].x + markerCoords[1].x + markerCoords[2].x + markerCoords[3].x) / 4,
    (markerCoords[0].y + markerCoords[1].y + markerCoords[2].y + markerCoords[3].y) / 4
  );

  float dd1 = cv::norm(center - markerCoords[0]);
  float dd2 = cv::norm(center - markerCoords[1]);
  float dd3 = cv::norm(center - markerCoords[2]);
  float dd4 = cv::norm(center - markerCoords[3]);

  return (fabs(dd1-dd2) < 5) && (fabs(dd1 - dd3) < 5) && (fabs(dd1 - dd4) < 5);
};
Run Code Online (Sandbox Code Playgroud)

我试图使用上面提到的lambda表达式来检查这四个点是否形成近似矩形的形状.但编译器抱怨错误:当我尝试在if语句中使用lambda表达式时,调用对象类型'bool'不是函数或函数指针:

if (markersFormRectangle(markerPoints)) {
    //do something
}
Run Code Online (Sandbox Code Playgroud)

当我更改返回类型时,auto它不会给我这个错误.我很擅长使用lambda仿函数.你能不能告诉我我做错了什么以及为什么编译器在类型改为 …

c++ lambda boolean

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