小编Sha*_*baz的帖子

DateTime.Now在一个语句中

在下面thisIsAlwaysTrue应该永远是真的.

DateTime d = DateTime.Now;
bool thisIsAlwaysTrue = d == d;
Run Code Online (Sandbox Code Playgroud)

但DateTime.Now是否以这样的方式工作,即theThisAlwaysTrue保证是真的?或者可以在引用Now属性之间改变时钟?

bool isThisAlwaysTrue = DateTime.Now == DateTime.Now;
Run Code Online (Sandbox Code Playgroud)

.net c# datetime

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

C 语言中的字符串是如何编译的?

C 语言中的字符串是如何编译的?根据我的理解,在 test1 中,字符串“hello”被编译器放入数据段中,并在第二行中为 p 分配了硬编码的虚拟地址。它是否正确?并且 test1 的工作方式和 test2 的工作方式之间没有基本区别。

一些代码:

#include <stdio.h>

test1();
test2();
test3();

main()
{
    test1();
    test2();
    //test3();
}

test1()
{
    char *p;
    p="hello";
}

test2()
{
    char *p="hello";
}

test3()
{
    char *p;
    strcpy(p,"hello");
}
Run Code Online (Sandbox Code Playgroud)

任何来自 C 标准的参考都将不胜感激,这样我就可以从编译器的角度深入理解这个东西。

c

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

exp函数使用c ++

我无法弄清楚为什么我一直得到结果1.#INF从my_exp()我给它1作为输入时.这是代码:

double factorial(const int k)
{
    int prod = 1;
    for(int i=1; i<=k; i++)
        prod = i * prod;
    return prod;
}

double power(const double base, const int exponent)
{
    double result = 1;
    for(int i=1; i<=exponent; i++)
        result = result * base;
    return result;
}

double my_exp(double x)
{
    double sum = 1 + x;
    for(int k=2; k<50; k++)
        sum = sum + power(x,k) / factorial(k);
    return sum;
}
Run Code Online (Sandbox Code Playgroud)

c++ function exp

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

这是shell排序还是插入排序?

我刚刚开始学习排序算法,并在网上找到了一个.起初我认为这是一个shell排序,但它缺少"k"的明显间隔和数组的减半所以我不确定它是否是.我的第二个猜测是插入排序,但我只是在这里仔细检查:

for(n = 1; n < num; n++)
{
    key = A[n];
    k = n;
    while((k > 0) && (A[k-1] > key))
    {
        A[k] = A[k-1];
        k = k-1;    
    }
    A[k] = key;
}
Run Code Online (Sandbox Code Playgroud)

此外,如果你能解释为什么这也有帮助

c c++ sorting algorithm

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

标签作为值与switch语句

我最近读到有关标签的价值,

int main(){
    int value  = 2;
    const void *labels[] = {&&val_0, &&val_1, &&val_2};
    goto *labels[value];
    val_0:
        printf("The value is 0\n");
        goto end;
    val_1:
        printf("The value is 1\n");
        goto end;
    val_2:
        printf("The value is 2\n");
        goto end;
    end:
    return(0);
}
Run Code Online (Sandbox Code Playgroud)

我要问的是,使用此方法而不是使用switch语句或指针数组是否真的有任何性能提升?

c gcc

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

fstream ifstream我不明白如何将数据文件加载到我的程序中

我的教授非常聪明,但我希望像我这样的完全新手只知道如何编写.我不明白这个fstream功能是如何工作的.

我将有一个包含三列数据的数据文件.我将不得不用对数确定每行数据是否代表圆形,矩形或三角形 - 这部分很容易.我不明白的部分是该fstream功能的工作原理.

我想我:

#include < fstream > 
Run Code Online (Sandbox Code Playgroud)

那我应该声明我的文件对象?

ifstream Holes;
Run Code Online (Sandbox Code Playgroud)

然后我打开它:

ifstream.open Holes; // ?
Run Code Online (Sandbox Code Playgroud)

我不知道正确的语法是什么,我找不到简单的教程.一切似乎都比我的技能处理得更先进.

此外,一旦我读入数据文件,将数据放入数组的正确语法是什么?

请问我只是声明数组如T[N]cinfstream物体Holes成吗?

c++ fstream ifstream ofstream

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

Makefile变量替换显然没有完成,即使:=在声明中使用

我有一个主内核模块,其他内核模块与之通信.我已经构建了这样的模块(概念上):

main module/
           |
            \drivers/
                    |
                    |\driver1
                    |\driver2
                     \driver3
Run Code Online (Sandbox Code Playgroud)

由于这些是内核模块,我需要像这样编译它们:

make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules
Run Code Online (Sandbox Code Playgroud)

但是,由于可以从以前的目录调用驱动程序的Makefile,我需要$(shell pwd)在调用其他make之前执行(linux的make).所以Makefile现在看起来像这样:

CURRENT_DIR := $(shell pwd)

.PHONY: all
all:
    $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(CURRENT_DIR) modules
Run Code Online (Sandbox Code Playgroud)

到目前为止它很好,它完美地工作.问题是:我有一个驱动程序需要包含的文件,所以我必须给出包含路径.我第一次尝试

EXTRA_CFLAGS += -I../..
Run Code Online (Sandbox Code Playgroud)

并立即明白为什么它不起作用(相对路径将是/ lib/module/...不是当前目录).所以我改成了:

MAIN_MODULE_HOME := $(CURRENT_DIR)/../..
EXTRA_CFLAGS += -I$(MAIN_MODULE_HOME)
Run Code Online (Sandbox Code Playgroud)

奇怪的是,这不起作用!如果我写

EXTRA_CFLAGS += -Ipath/I/get/from/pwd/../..
Run Code Online (Sandbox Code Playgroud)

手动,它编译!谁能解释我做错了什么?在调用make之前,我echo编辑$(CURRENT_DIR)并且$(MAIN_MODULE_HOME)变量是有意义的.

我知道,EXTRA_CFLAGS是不是马上进行评估,但由于CURRENT_DIRMAIN_MODULE_HOME与声明:=我不明白事情是如何得到搞砸.

(如果有人能更好地说出问题标题,请做!)

linux variables makefile kbuild

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

如何为ebtables编写自定义模块?

基本上,我想编写一个内核模块,为ebtables添加一个可能的过滤器.然后我需要告诉ebtables在我设置的桥上使用我的过滤器.

我需要编写自己的模块的原因是我想在连续的包之间引入延迟(出于某些测试原因).为了演示,我的网络最初有这样的流量:

+++-----------------+++-----------------+++-----------------+++-----------------
Run Code Online (Sandbox Code Playgroud)

其中+显示了包裹的流量,并且-表示没有包裹在线上.我想在它们之间放置一个桥接器,以便数据包的模式将改变为:

+----+----+---------+----+----+---------+----+----+---------+----+----+---------
Run Code Online (Sandbox Code Playgroud)

这意味着我会确保每个数据包到达之间会有一定的延迟.

现在我编写了以下简单的代码,我基本上从linux-source/net/bridge/netfilter/ebt_ip.c中获取:

static bool match(const struct sk_buff *skb, const struct xt_match_param *par)
{
    printk(KERN_INFO"match called\n");
    return true;  // match everything!
}

static bool check(const struct xt_mtchk_param *par)
{
    printk(KERN_INFO"check called\n");
    return true;  // pass everything!
}

static struct xt_match reg __read_mostly = {
    .name = "any",   // I made this up, but I tried also putting ip for example which didn't change anything.
    .revision = 0,
    .family = NFPROTO_BRIDGE,
    .match = …
Run Code Online (Sandbox Code Playgroud)

linux kernel iptables netfilter ebtables

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

使用通配符排除具有特定后缀的文件

我正在尝试使用bash中的通配符,并尝试列出所有以"xyz"开头但不以".TXT"结尾的文件,但结果不正确.

这是我尝试的命令:

$ ls -l xyz*[!\.TXT]
Run Code Online (Sandbox Code Playgroud)

它没有列出我的目录中名称为"xyz"和"xyzTXT"的文件.但是,它列出了"xyz1","xyz123".

似乎[!\.TXT]在"xyz*"之后添加使shell看起来以"xyz"开头且至少有一个字符的东西.

任何想法为什么会发生以及如何纠正这个命令?我知道它可以使用其他命令来实现,但我特别感兴趣的是知道它为什么失败以及它是否只能使用通配符.

linux bash wildcard

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

如何终止 Emacs 中正在运行的进程

当我编译c++文件时,emacs显示\xef\xbc\x9a

\n\n
\n

编译进程正在运行;杀死它?(y 或 n)。

\n
\n\n

y没有任何效果。如何在 Emacs 中终止活动进程?进程列表中有很多正在运行的进程

\n

c++ emacs process

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