小编Joe*_*ker的帖子

这些C外部定义之间有什么区别?

我在调试AVR微控制器时遇到了这个问题:我有一个带有大量变量定义的main.c文件,其中有一个结构数组,如下所示:

struct mystruct mystruct_array[COUNT];
Run Code Online (Sandbox Code Playgroud)

在另一个.c文件中,我将此数组称为外部,但是我放弃了数组括号和大小,所以我不会重复自己,只是将变量声明为指针(因为数组本质上是指针,不是吗?) :

extern struct mystruct *mystruct_array;
Run Code Online (Sandbox Code Playgroud)

但是,当我检查使用数组的地址printf("%p\n", mystruct_array);得到了一个空指针,而不是在存储阵列的位置.另外,如果我将访问后续项目数组中,喜欢printf("%p\n", &(mystruct_array[n]));将打印地址0加nsizeof(struct mystruct).

只有在我将定义更改为

extern struct mystruct mystruct_array[COUNT];
Run Code Online (Sandbox Code Playgroud)

(与main.c完全相同),我得到了数组的真实地址.

我的问题:为什么这会对编译器产生影响(在我的例子中是avr-gcc)?

c arrays extern avr-gcc

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

Python:元组赋值,同时转换类型

我正在将字符串中的制表符分隔值读入这样的对象:

class Node(rect):
    def __init__(self, line):
        (self.id, self.x1, self.y1, self.x2, self.y2) = line.split('\t')
Run Code Online (Sandbox Code Playgroud)

这工作正常,但是我想将那些从字符串中读取的x和y坐标转换line为浮点数.什么是最pythonic的方式来做到这一点?我想象的东西

(self.id, float(self.x1), float(self.y1), float(self.x2), float(self.y2)) = line.split('\t')
Run Code Online (Sandbox Code Playgroud)

这当然不起作用.是否有一种优雅的方式来做到这一点,或者我必须手动转换后self.x1 = float(self.x1)呢?

python floating-point tuples type-conversion

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

标签 统计

arrays ×1

avr-gcc ×1

c ×1

extern ×1

floating-point ×1

python ×1

tuples ×1

type-conversion ×1