小编roh*_*t89的帖子

我们怎么知道调用者函数的名字?

在C语言中,__FUNCTION__可以用来获取当前函数的名称.但是,如果我定义一个名为a()的函数,并在b()中调用它,如下所示:

b()
{
    a();
}
Run Code Online (Sandbox Code Playgroud)

现在,在源代码中,有很多函数,比如b()调用a(),例如c(),d(),e()......

是否有可能在()中添加一些代码来检测调用a()的函数的名称?

进一步:

  1. 对不起误导性的拼写错误.我纠正了它.
  2. 我试图找出哪个函数调用a()进行调试.在同样的情况下,我不知道你怎么做?
  3. 我的代码在vxWorks下,但我不确定它是否与C99或其他相关.

c

26
推荐指数
5
解决办法
4万
查看次数

Ruby将散列内的值转换为局部变量

说我有这个哈希:

entry = {"director"=>"Chris Nolan", "prducer"=>"Sum Duk", "writer"=>"Saad Bakk"}
Run Code Online (Sandbox Code Playgroud)

我想将每个键提取到自己的局部变量中,并带有相关的值:

director = "Chris Nolan"
producer = "Sum Duk"
...
Run Code Online (Sandbox Code Playgroud)

通过使用循环而不是:

director = entry["director"]
Run Code Online (Sandbox Code Playgroud)

由于有很多值,我不想单独进行.

我发现这几乎完全有效,除了它创建一个实例变量,我想要一个局部变量,但local_variable_set由于某种原因不存在.

entry.each_pair { |k, v| instance_variable_set("@#{k}", v) }
Run Code Online (Sandbox Code Playgroud)

有解决方案吗?或者失败了,一种方法将实例变量转换为本地变量并删除实例变量而不逐一进行?

ruby

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

以编程方式指定运算符

是否可以指定运算符R,其中R可以是算术运算符,关系运算符或逻辑运算符?

例如,计算的函数

c = a R b
Run Code Online (Sandbox Code Playgroud)

在那里我可以指定是否R+, -, *, /

这可以用C#完成吗?

c# operators

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

接收具有微秒级精度的RAW套接字数据包

我正在编写一个代码,它从服务器每隔1ms接收一次原始以太网数据包(无TCP/UDP).对于收到的每个数据包,我的应用程序必须回复14个原始数据包.如果服务器在每1ms发送一次数据包之前没有收到14个数据包,则服务器会发出警报并且应用程序必须中断.服务器 - 客户端通信是一对一链接.

服务器是硬件(FPGA),以精确的1ms间隔生成数据包.客户端应用程序在具有10G SolarFlare NIC的Linux(RHEL/Centos 7)计算机上运行.

我的第一个代码版本是这样的

while(1)
{
  while(1)
  {
     numbytes = recvfrom(sockfd, buf, sizeof(buf), 0, NULL, NULL);
     if(numbytes > 0)
     {
        //Some more lines here, to read packet number
        break;
     }
  }
  for (i=0;i<14;i++)
  {
     if (sendto(sockfd,(void *)(sym) , sizeof(sym), 0, NULL, NULL) < 0)
            perror("Send failed\n");
  }
}
Run Code Online (Sandbox Code Playgroud)

我通过clock_gettimerecvfrom呼叫之前采用时间戳(使用)和在呼叫之后采用时间戳来测量接收时间,我打印这些时间戳的时间差并在时间差超过900-1100 us的允许范围时打印它们.

我面临的问题是数据包接收时间是波动的.这样的事情(打印是以微秒为单位)

Decode Time : 1234
Decode Time : 762
Decode Time : 1593
Decode Time : 406
Decode Time : 1703
Decode …
Run Code Online (Sandbox Code Playgroud)

c sockets linux performance networking

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

使用动态编程将自然数表示为平方和

问题是找到求和数n所需的最小平方数.

一些例子:

min[ 1] = 1 (1²)
min[ 2] = 2 (1² + 1²)
min[ 4] = 1 (2²)
min[13] = 2 (3² + 2²)
Run Code Online (Sandbox Code Playgroud)

我知道拉格朗日的四方定理,它表明任何自然数都可以表示为四个平方的总和.

我正试图用DP解决这个问题.

这就是我提出的(不正确)

min[i] = 1 where i is a square number
min[i] = min(min[i - 1] + 1, 1 + min[i - prev]) where prev is a square number < i
Run Code Online (Sandbox Code Playgroud)

什么是正确的DP方式来解决这个问题?

algorithm

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

限制C#中的泛型类型

我有一个泛型类MyClass<T>,其中T应该是那些可以比较的类型.

这将仅表示已定义关系运算符的方法的数字类型和类.我该怎么做呢 ?

c# generics types

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

分支预测与分支目标预测

我是否理解这一点,if语句更依赖于分支预测,而v-table查找更依赖于分支目标预测?关于v表,没有"分支预测",只有目标预测?

试图了解CPU如何处理v表.

c++ polymorphism cpu performance branch-prediction

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

Console.WriteLine()的高内存使用率

public static void Main()
{
    int size = 250000;
    var a = new int[size];
    for (int i = 0; i < size; i++)
        Console.WriteLine("{0}", a[i]);
}
Run Code Online (Sandbox Code Playgroud)

当我用CLRProfiler测试上面的代码时,它告诉我代码分配大约40 MB.大约20 MB分配给String,9 MB到Char[]5 MB到StringBuilder3 MB到Int32.

public static void Main()
{
    int size = 250000;
    var a = new int[size];
    for (int i = 0; i < size; i++)
        Console.WriteLine("0");
} 
Run Code Online (Sandbox Code Playgroud)

这个分配大约5 MB.分配4 MB Char[].

我唯一得到的是阵列a应该需要1 MB(250,000*4).

为什么会有这么大的差异?为什么第一个代码需要所有这些对象?如何减少内存分配?

c# memory-management

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

在没有drawTicks的情况下隐藏chart.js中的网格线

我正在使用创建图表chart.js。我想删除网格线,但我想保留一点pieces(drawTicks:true ),在下图中标记为黄色。

这可能吗?

我试过了:

gridLines: {
   display: false,
   drawTicks: true
}
Run Code Online (Sandbox Code Playgroud)

但这隐藏了所有网格线。

chart.js中的折线图

chart.js

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

指向C#中的类实例的指针

是否可以将引用存储到类实例中?

class Node
{
    public int id;
    public int value;
    public List<Node> neighbours;
}
Run Code Online (Sandbox Code Playgroud)

如何neighbours以这样的方式填充列表:我对Node实例所做的任何更改都将反映在那里?

c# pointers

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