小编mta*_*med的帖子

在Rust中将String转换为int?

注意:此问题包含已弃用的1.0之前的代码!答案是正确的.

要将一个转换str为一个int在Rust中,我可以这样做:

let my_int = from_str::<int>(my_str);
Run Code Online (Sandbox Code Playgroud)

我知道如何将一个转换的唯一方法Stringint是得到它的一个切片,然后用from_str它像这样:

let my_int = from_str::<int>(my_string.as_slice());
Run Code Online (Sandbox Code Playgroud)

有没有办法直接将a转换Stringint

rust

137
推荐指数
6
解决办法
9万
查看次数

为什么不总是使用编译器优化?

我前面问过的一个问题是未定义的行为,因此编译器优化实际上导致程序中断.

但是如果代码中没有未定义的行为,那么有没有理由不使用编译器优化?我理解有时候,出于调试目的,可能不需要优化代码(如果我错了请纠正我).除此之外,在生产代码上,为什么不总是使用编译器优化?

另外,是否有理由使用,-O而不是-O2-O3

compiler-construction compiler-optimization

33
推荐指数
3
解决办法
9929
查看次数

为什么python使用非常规的三引号来评论?

为什么python不使用C/C++/Java使用的传统风格的注释:

/**
 * Comment lines 
 * More comment lines
 */

// line comments
// line comments
//
Run Code Online (Sandbox Code Playgroud)

是否有特定原因或者它是否随意?

python comments coding-style

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

为什么我可以隐式地将int文字转换为C中的int*而不是C++中的int*?

我相信在下面的代码中,C"自动转换为17 int *",正如有人最近指出的那样(但没有说明原因),这是错误的.

int *ptoi = 17; // I assumed that 17 is being automatically casted to int *
Run Code Online (Sandbox Code Playgroud)

我知道如果我在C++中做同样的事情,我会收到一个错误invalid conversion from int to int *.但是,如果我在C++中执行以下操作,它可以正常工作:

int *ptoi = (int *)17;
Run Code Online (Sandbox Code Playgroud)

这些是我认为在C中,铸造是隐含的原因.

有人可以解释为什么,在C++中,我必须使用它,但在C中,它工作正常吗?

c c++ pointers casting

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

允许脚本读取文件但阻止用户直接查看文件

假设我有一个纯文本文件example.txt,我的Web服务器上有一个PHP脚本readfile.php.

我希望能够做的是阻止用户http://www.example.com/example.txt直接键入和查看文本文件,但我仍然希望人们能够http://www.example.com/readfile.php从文件中加载哪些内容example.txt并对其执行某些操作(可能显示文件的内容) .

此外,如果可以做到这一点,最好的方法是什么?

php linux

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

为make中的所有文件定义预处理器变量

通过将代码块放在预处理器指令中,我有许多.c.h文件禁用了代码的某些部分,例如

#ifdef FOOBAR
// some code that can be compiled if needed by defining FOOBAR in pre-processor.
#endif
Run Code Online (Sandbox Code Playgroud)

不,我需要FOOBAR定义为gcc使用的每个文件定义的make.

有没有办法做一些选项来做或Makefile

谢谢.

c gcc makefile c-preprocessor

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

跟踪数据包通过内核(linux)

我有两台机器设置为使用Ip-Security和机器A(让我们称之为A和B)有一个套接字,它绑定到本地机器上的特定UDP端口,并经常轮询它以查看是否有任何接收在上面.

当我禁用Ip-security时,两台机器之间的数据运行良好,我发送和接收数据包正常.但是当启用Ip-Security时,数据包无法到达机器B发送的机器A上的那个套接字.

tcpdump在两台机器上都做了一个,我可以看到(加密的)数据包从机器B发出并在机器A上被接收.但是之后,数据包进入内核,在某个地方要么解密数据包,要么在在其他阶段,数据包被丢弃.

我希望能够在数据包通过内核时跟踪数据包并查看它被丢弃的位置.有一些/proc我可以用于此目的吗?我能想到的另一种方法是在整个内核中插入调试语句并重新编译它,然后尝试再次发送数据包并进行调试.

感谢和抱歉长信息,但这是必要的.

c sockets networking packet linux-kernel

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

编译器优化导致程序运行速度变慢

我在C中编写了以下代码.它非常简单,因为它恰好x为每个for循环进行了位移.

int main() {
   int x = 1;
   for (int i = 0; i > -2; i++) {
      x >> 2;
   }
}
Run Code Online (Sandbox Code Playgroud)

现在正在发生奇怪的是,当我刚刚编译它没有任何的优化或第一级优化(-O),它运行得很好(我定时可执行文件及其有关1.4s-O5.4s没有任何优化.

现在,当我添加-O2-O3切换编译并为生成的可执行文件计时时,它不会停止(我已经测试过60s).

关于可能导致这种情况的任何想法?

c gcc compiler-optimization

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

简单的消息传递应用程序...获得错误14:糟糕的地址

我正在使用套接字在C中编写一个简单的消息传递应用程序 当我使用函数时recvfrom,它返回-1并设置errno = 14哪个Bad address(我在最后打印).

奇怪的是它仍然从套接字读取并获取正确的消息.也就是说,除了错误之外,应用程序正在按预期工作.

我的问题是:你为什么认为我收到这个错误?我想不出任何理由.我正在使用inet_pton设置,peer->sin_addr但我得到了同样的错误.

// socket file descriptor to send data through
int recv_sock_fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);

// fill in the peer's address, loopback in this case
struct sockaddr_in *peer = malloc(sizeof(struct sockaddr_in));
peer->sin_family = AF_INET;
peer->sin_port   = htons(11110);
char *new = &(peer->sin_addr);
new[0] = 127;
new[1] = 0;
new[2] = 0;
new[3] = 1;
for (int i = 0; i < 8; i++) …
Run Code Online (Sandbox Code Playgroud)

c sockets errno

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

无法使用Python中的inspect通过exec获取"声明"的方法的源代码

以下代码抛出异常:

import inspect

def work():
    my_function_code = """def print_hello():
                              print('Hi!')
                       """
    exec(my_function_code, globals())
    inspect.getsource(print_hello)
Run Code Online (Sandbox Code Playgroud)

上面的代码抛出异常IOError.如果我在不使用exec的情况下声明函数(如下所示),我可以很好地获取它的源代码.

import inspect

def work():
    def print_hello():
        print('Hi!')
    inspect.getsource(print_hello)
Run Code Online (Sandbox Code Playgroud)

我有充分的理由做这样的事情.

这有解决方法吗?可以这样做吗?如果没有,为什么?

python reflection

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