相关疑难解决方法(0)

从C中的函数返回`struct`

今天我教了几个朋友如何使用C structs.其中一个问你是否可以struct从一个函数返回一个函数,我回答说:"不!你会返回指向动态malloc编辑struct的指针."

来自主要使用C++的人,我期望无法struct按值返回s.在C++中,您可以operator =为对象重载并完全理解为具有按值返回对象的函数.但是,在C中,你没有那个选项,所以它让我思考编译器实际上在做什么.考虑以下:

struct MyObj{
    double x, y;
};

struct MyObj foo(){
    struct MyObj a;

    a.x = 10;
    a.y = 10;

    return a;
}        

int main () {

    struct MyObj a;

    a = foo();    // This DOES work
    struct b = a; // This does not work

    return 0;
}    
Run Code Online (Sandbox Code Playgroud)

我理解为什么struct b = a;不能工作 - 你不能operator =为你的数据类型重载.它是如何a = foo();编译罚款?这是否意味着什么struct b = …

c

153
推荐指数
6
解决办法
25万
查看次数

有没有理由说Python的ctypes.CDLL无法从C头文件自动生成重定型和argtypes?

例如,能够这样做会很高兴:

from ctypes import CDLL
mylib = CDLL('/my/path/mylib.so',header='/some/path/mylib.h')
Run Code Online (Sandbox Code Playgroud)

代替

from ctypes import *
mylib = CDLL('/my/path/mylib.so')
mylib.f.restype = c_double
mylib.f.argtypes = [c_double, c_double]
mylib.g.restype = c_int
mylib.g.argtypes = [c_double, c_int]
Run Code Online (Sandbox Code Playgroud)

我对python的经验表明,已经完成了与此非常接近的事情并且我无法找到它,或者有充分的理由不这样做.这些都是这种情况吗?

python

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

C Typedef和Struct问题

这两个声明之间的区别是什么,并且优先于另一个?

typedef struct IOPORT {  
    GPIO_TypeDef* port;  
    u16           pin;  
} IOPORT;  

typedef struct {  
    GPIO_TypeDef* port;  
    u16           pin;  
} IOPORT;  
Run Code Online (Sandbox Code Playgroud)

c struct typedef namespaces

10
推荐指数
3
解决办法
4487
查看次数

标签 统计

c ×2

namespaces ×1

python ×1

struct ×1

typedef ×1