小编Joe*_*Joe的帖子

这些陈述是什么意思?

#include<stdio.h>
void main() {
 int s[4][2]={
               {1,2},
               {3,4},
               {5,6},
               {7,8}
             };
int (*p)[2]; // what does this statement mean? (A)
int i,j,*pint;

for(i=0;i<=3;i++) {
 p=&s[i];
 pint=(int*)p;  // what does this statement mean? (B)
 printf("\n");
  for(j=0;j<=1;j++) {
    printf("%d",*(pint+j));
  }
}
Run Code Online (Sandbox Code Playgroud)

我无法理解陈述'A'和'B'.如何做和做了什么?请非常清楚地解释一下.

c

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

解决C#和C++/CLI项目之间的循环项目依赖性?

我们有一个包含许多项目的解决方案.

在一个特定情况下,我们有两个项目:1)完成大部分工作的AC#项目2)一个C++/CLI项目,充当一些本机C++代码的中介

C#代码调用C++包装器,一切都很好.

但是,我们正在引入一些新功能.在C++包装器(项目#2)的托管端,它需要在项目#1中的托管C#代码中使用一些静态方法.但是,Visual Studio不会让我们相互关联这两个项目,因为它抱怨循环项目引用.但是没有循环引用.

有没有解决这个问题的方法,不需要第三个项目作为中间人?

c# c++-cli circular-dependency visual-studio-2010

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

同时运行两个C程序共享内存,怎么样?

我有两个c文件:producer.c和consumer.c.Consumer在内存中创建共享缓冲区,并等待生产者将项目放入缓冲区以供使用.生产者将共享内存附加到其内存映射,然后开始将项目放入缓冲区.

问题是如何编译和运行它们?

这是实际的任务.(我知道我可以使用一个c文件使用线程,但这不是我被要求做的.)

在这一部分中,您将开发一个生产者 - 消费者应用程序,它将使用共享内存进行进程通信(POSIX共享内存,而不是System V共享内存).将有N个生产者和N个消费者.N可以是1,2或3.

您将开发一个生产者程序(producer.c)和一个使用者程序(consumer.c).启动时,生产者程序将创建N个子进程,这些进程将充当N个生成器(即每个子进程将是生产者进程).

类似地,当启动时,消费者程序将创建N个子进程,其中每个子进程将充当消费者进程.你会认为消费者被识别为0,1,2,取决于N.例如,如果N是2,那么将有两个消费者,0和1.

消费者计划将首先运行.运行时,使用者程序将首先创建大小为4 KB的共享内存.这个共享内存将是您将拥有共享单个缓冲区的位置.生产者和消费者可以访问缓冲区.缓冲区大小为100.它最多可以容纳100个项目(整数).在共享内存中,您可以使用其他一些您认为必要的共享变量.消费者程序还将创建一个或多个信号量(您决定了多少).

然后它将使用fork()系统调用创建N个子进程(N个使用者)(您不需要使用exec()系统调用).在创建子进程之后,消费者程序(父进程)的主要进程不应该终止.它应该等到所有孩子(即消费者)完成任务并终止.当所有子节点终止时,它将从系统中删除(删除)共享内存.它还将删除(删除)信号量.然后它也可以终止.

每个生产者将读取正整数的输入文件(每行一个整数),并且只通过位于生产者和消费者之间的共享内存(由消费者程序创建)中的共享缓冲区传递整数.

如果z mod N等于消费者的ID,则每个消费者将从共享缓冲区读取整数并将接收的整数z写入与消费者相关联的输出文件.例如,如果N为3且消费者的ID为2且消费者已收到整数7,则它将不执行任何操作(忽略),但如果它收到8,则会将整数写入其输出文件.输出文件将在一行中包含一个整数.当生产者和消费者访问共享缓冲区时,他们应该使用信号量以便访问同步.另外,如果缓冲区已满,生产者应该睡觉,如果没有消费,消费者应该睡觉.我们不应该忙着等待.您将使用POSIX信号量(命名信号量).消费者计划将按如下方式调用:
消费者N ...

这里,N是要创建的使用者进程的数量.此参数的值必须与生产者程序的相应参数相同.这里是消费者将使用ID X的输出文件的名称.输入的输出文件名的数量将等于N.是我们可以用来标识共享内存的名称.是我们可以用来标识信号量的名称(它可以是可用于许多信号量名称的前缀).调用生产者时必须使用这些相同的名称.生产者程序将被命名为生产者,并将使用以下参数调用:
producer N ...

这里,N是生产者的数量.它是生产者X的输入文件的名称.输入文件是存储整数的文本文件.我们输入的输入文件名的数量将等于N.文件中可以有一个或多个整数.输入文件可能非常庞大(数十亿整数).是我们可以用来识别共享内存的名称.是我们可以用来识别信号量的名称.

程序的示例调用可以如下所示.
消费者3 out0.txt out1.txt out2.txt mysmem mysemaphores producer 3 in0.txt in1.txt in2.txt mysmem mysemaphore

c memory shared

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

制作linux tree bash脚本显示文件

我创建了一个基于树脚本的shell脚本,但是,我需要一种方法来使所述脚本显示文件以及目录(顺便说一句:我需要脚本在Mac OS X上运行.)

bash shell tree

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

我错误地编码了吗?

几十年前我做了一些C编程.我正在尝试重新学习这门语言.我写了这个.我得到了意想不到的东 当我将'short int'更改为'int'时,它似乎有效.任何人都可以查看我的代码,看看它是否有任何问题,或者这是一个编译器问题.我在Linux上使用gcc.

#include <stdio.h>

int main(void) {

    short int age = 0;
    short int num_1_yr_olds = 0;
    short int num_2_and_3_yr_olds = 0;
    short int num_above_3_yr_olds = 0;

    while(1) {

        printf ("Enter age: ");
        scanf ("%d", &age);

        if (age < 1) {
            break;
        }

        switch (age) {
            case 1:
                ++num_1_yr_olds;
                break;
            case 2:
            case 3:
                ++num_2_and_3_yr_olds;
                break;
            default:
                ++num_above_3_yr_olds;
                break;
        }
    }
    printf ("Number of 1 year olds = %d\n", num_1_yr_olds);
    printf ("Number of 2 and 3  year olds = …
Run Code Online (Sandbox Code Playgroud)

c gcc

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

创建全局键盘钩

我正在尝试创建一个全局键盘钩子,用于读取我正在创建的热键程序的击键,我遇到了一些问题.首先是每当我激活我的钩子时,键盘变得迟钝.屏幕上出现的每个角色之间几乎有一整秒的延迟.第二个问题是我在DLL回调函数中编写的任何代码都不会被执行.

这是我的代码:

DLL cpp文件

#include<Windows.h>
#include "keyDLL.h"

using namespace std;

LRESULT CALLBACK HookProcedure(int code, WPARAM wParam, LPARAM lParam)
{
    return CallNextHookEx(0, code, wParam, lParam);
}
Run Code Online (Sandbox Code Playgroud)

DLL头文件

#include "windows.h"

extern "C" __declspec(dllexport) LRESULT CALLBACK HookProcedure(int code, WPARAM wParam, LPARAM lParam);
Run Code Online (Sandbox Code Playgroud)

钩CPP文件

#include<Windows.h>
#include<iostream>
using namespace std;

HHOOK WINAPI SetWindowsHookEx(_In_  int idHook, _In_  HOOKPROC lpfn, _In_  HINSTANCE hMod, _In_  DWORD dwThreadId
static HINSTANCE dllHandle;
HOOKPROC address;
static HHOOK keyboard_hook;

int main()
{
    dllHandle = LoadLibrary(TEXT("keyDLL.dll"));
    address = (HOOKPROC)GetProcAddress(dllHandle, "HookProcedure");
    cout << address …
Run Code Online (Sandbox Code Playgroud)

c++ dll winapi

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

减少用于记录的样板

我阅读了structlog的文档:Configuration

目标是将每个文件的日志记录样板减少到:

from structlog import get_logger
logger = get_logger()
Run Code Online (Sandbox Code Playgroud)

有没有办法将此减少到一个导入线(没有;)?

python logging structlog

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

无法安装 gem ffi - Windows 7 64 位

我是学习 Cucumber/Ruby 的新手。

我尝试安装 gem“ffi”,但是当我从控制台执行此操作时,我收到以下消息:

安装 ffi 时出错:支持 Ruby 和 RubyGems 的最新版本 ffi (>= 0) 使用gem install ffi -v 1.9.18 ffi 安装它需要 Ruby 版本 < 2.5,>= 2.0。当前的 ruby​​ 版本为 2.5.0。

ruby rubygems cucumber

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

导入自定义字体时出现抖动错误

我尝试将图标安装为自定义字体,但是每当我尝试运行我的应用程序时,控制台都会告诉我pubspec.yaml文件中出现错误。我的字体位置是:myapp / fonts / icomoon.ttf,这是pubspec.yaml文件的相关部分:

 fonts:
  - family:          icomoon
     fonts:
     -asset:        fonts/icomoon.ttf
Run Code Online (Sandbox Code Playgroud)

我收到的错误消息是:

#/ properties / flutter / properties / fonts / items / properties / fonts:类型:想要的[数组]得到{-asset:fonts / icomoon.ttf}为C:\ Users \ merli \ Documents \ Projects \ WorkoutApp \构建资产时出错myapp \ build \ app \ intermediates \ flutter \ debug / app.flx

失败:构建失败,发生异常。

  • 其中:脚本'C:\ Users \ merli \ flutter \ packages \ flutter_tools \ gradle \ flutter.gradle'行:441

  • 出了什么问题:任务':app:flutterBuildDebug'的执行失败。

    进程'命令'C:\ Users \ merli \ flutter \ bin \ flutter.bat'完成,退出值非零1

  • 尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。

  • https://help.gradle.org上 …

fonts yaml gradle dart flutter

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

了解FMA表现

我想了解如何计算FMA性能。如果我们在这里查看说明:

https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_fmadd_ps&expand=2520,2520&techs=FMA

对于Skylake架构,该指令具有Latency=4Throughput(CPI)=0.5,因此该指令的整体性能为4*0.5 = 2每条指令的时钟数。

据我了解,如果最大(涡轮)时钟频率为3GHz,那么对于一秒钟的单个内核,我可以执行1 500 000 000条指令。

这样对吗?如果是这样,我观察到性能稍高的原因可能是什么?

c++ x86 fma

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