小编jay*_*jay的帖子

将指针存储在void*中的函数指针

我明白你为什么不能这样做:

void(*fp)(void) = &function;
function_taking_void_pointer((void*)fp);
Run Code Online (Sandbox Code Playgroud)

因为类型的长度可能不同.

但是添加另一个间接层是否有任何问题:

void(*fp)(void) = &function;
void(**fpp)(void) = &fp;
function_taking_void_pointer((void*)fpp)
Run Code Online (Sandbox Code Playgroud)

我在这背后的想法:指向函数指针的指针应指向数据存储器,因此应该与void*类型具有相同的长度.

那我有多难?

c pointers function-pointers

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

django 模板嵌套字典,按键抓取值

在 django 模板中,如果我在上下文字典中有一个键与另一个字典(嵌套字典)相关联,我知道如何遍历它(如何在 django 模板中的字典中遍历字典?)但我需要找到键值。

喜欢 {{ nested_dictionary['key'] }}

但我猜不完全是这样...

可以使用过滤器,但有更好的方法吗?

html python django templates

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

在 FreeRTOS 中重新定义 malloc 以实现线程安全

我可以做这样的事情吗:

#ifdef FREERTOS

#define malloc(size) pvPortMalloc(size)
#define free(ptr) pvPortFree(ptr)

#endif
Run Code Online (Sandbox Code Playgroud)

并期望它总是调用pvPortMalloc()而不是malloc()?

另外,把它放在之前/之后会有什么区别#include <stdlib.h>

我有一些代码想要在 FreeRTOS 内和外运行,我想将所有调用替换为使用 FreeRTOS 时的malloc()调用pvPortMalloc()

c malloc std freertos c-preprocessor

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

边缘触发的epoll c

在边缘触发的epoll事件中,我读取了一个套接字(或多个套接字,如果需要),直到没有更多的数据(EAGAINEWOULDBLOCK)然后循环回来epoll_wait.如果在处理读取时,另一个套接字(当前未读取的套接字)已准备好读取,会发生什么?边缘触发epoll是否会忽略这一点,因为它epoll_wait在触发/信号时没有阻塞,或者它会在下一次调用时立即返回事件数组中的套接字epoll_wait

c sockets epoll

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

C++以多种方式打印对象

如果我采用一个简单的日期对象:

#include <iostream>
using namespace std;

class Date
{
    int mo, da, yr;
public:
    Date(int m, int d, int y)
    {
        mo = m; da = d; yr = y;
    }
    friend ostream& operator<<(ostream& os, const Date& dt);
};

ostream& operator<<(ostream& os, const Date& dt)
{
    os << dt.mo << '/' << dt.da << '/' << dt.yr;
    return os;
}

int main()
{
    Date dt(5, 6, 92);
    cout << dt;
}
Run Code Online (Sandbox Code Playgroud)

我希望可以选择以英国人理解的方式打印它

ostream& operator<<(ostream& os, const Date& dt)
{
    os …
Run Code Online (Sandbox Code Playgroud)

c++ iostream

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

为线程分配堆栈内存

我正在用 c 语言编写一个多线程环境,使用 setjmp() 和 longjmp() 在线程之间切换。

我不确定如何最好地为每个线程分配堆栈空间。这必须在更大规模的线程环境中动态完成,但我想不出一种方法来跟踪线程使用了多少堆栈,以便改变分配的数量。

我可以在堆栈各部分之间预先分配静态空间量,如下所示:

void call_with_cushion (void) {
    char space[1000]; 
    space[999] = 1; /* Do not optimize array out of existence */
    child();
}
Run Code Online (Sandbox Code Playgroud)

(代码片段来自维基百科http://en.wikipedia.org/wiki/Setjmp.h

但这似乎不灵活,我只是想知道多线程环境通常如何为每个线程分配内存?

谢谢

c memory multithreading memory-management

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

void指针可以安全地指向另一个指针吗?

这可能很明显但是,void指针可以安全地指向另一个指针吗?即指向int类型*

int i = 5;
int *ip = &i;
void *vp = &ip;

int *nip = *(int **)vp;
int ni = *nip; // == 5?
Run Code Online (Sandbox Code Playgroud)

编辑:对不起也许我不清楚,我想知道一个void指针是否可以指向一个具有另一个指针类型的内存部分; 没有空虚**.只是无效*

c pointers void

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

python 子进程缺少参数

一直试图让这样的东西工作一段时间,下面似乎没有将正确的arg发送到c程序arg_count,它输出argc = 1. 当我非常确定我希望它是这样的时候2./arg_count -arg从 shell 输出 2...

我尝试过使用另一个参数(因此它会在 shell 中输出 3),并且在通过子进程调用时仍然输出 1。

import subprocess
pipe = subprocess.Popen(["./args/Release/arg_count", "-arg"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = pipe.communicate()
result = out.decode()
print "Result : ",result
print "Error : ",err
Run Code Online (Sandbox Code Playgroud)

知道我在哪里摔倒了吗?顺便说一句,我正在运行Linux。

python subprocess command-line-arguments

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

Django模板过滤执行顺序

我想用一个字符串(“ charge”)合并一个变量(标识符),然后将其用作嵌套dict(属性)的键,这是我当前的失败代码:

attributes|valuebykey:"charge"|add:identifier
Run Code Online (Sandbox Code Playgroud)

我想我需要类似的东西(基本上改变执行顺序):

attributes|valuebykey:("charge"|add:identifier)
Run Code Online (Sandbox Code Playgroud)

但是这种语法似乎不起作用

flter :(只是从字典中获得一个值)

@register.filter
def valuebykey(d, k):
    try:
        ret = d.get(k)
        if ret is None:
            ret = ''
    except:
        ret = ''
    return ret
Run Code Online (Sandbox Code Playgroud)

关于如何更改执行顺序,或使用带有3个独立参数的过滤器有任何想法吗?或以其他方式可以在嵌套字典中找到一个带有var和字符串组合的键的值?

谢谢!

django templates filter

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

在c中找到int的位宽; 最佳跨平台方法

我需要知道正在运行我的代码的系统中的本机int的宽度(大小),以位为单位.

我可以使用"sizeof"来获取chars中的宽度,但是,据我所知,C规范中没有任何地方可以为char分配特定的位数.

那么找到int的位宽的最佳跨平台方法是什么?

c size int bit width

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