小编bk.*_*bk.的帖子

为什么C区分 - >和.?

OK,这是没有严重的后果,但它被窃听我一会:有没有为区分的理由->.运营商?

当然,当前的规则是.作用于结构,并->作用于指向结构(或联合)的指针.但这是它在实践中的运作方式.让我们s成为包含元素的结构x,让它ps成为指向同一形式的结构的指针.

如果你写

s->x
Run Code Online (Sandbox Code Playgroud)

编译器会以这种方式吐出警告

你的意思是sx请重新输入并重新编译.

如果你写

ps.x
Run Code Online (Sandbox Code Playgroud)

编译器会以这种方式吐出警告

你的意思是ps-> x.请重新输入并重新编译.

因为编译器知道两者的类型s并且ps在编译时,它具有解释正确运算符所需的所有信息.我怀疑这不像其他警告(如缺少分号),因为没有关于正确修复的含糊不清.

所以这是对C1x标准委员会的一个假设性提议(由于ISO处于保守状态,因此永远不会被考虑):

给定表达式lhs.rhs,如果lhs是结构或联合类型,则表达式应引用名为rhs的lhs元素.如果lhs是指向结构或-union的类型,则应将其解释为(*lhs).rhs.

这肯定会拯救我们所有的时间,并且让人们更容易学习C [并且我已经教过足够的C来说明学习者发现->事情要么令人困惑或烦恼.]

甚至有先例,C做了一些类似的事情.例如,对于实现的原因,函数声明总是被转换为指针到功能,所以f(x,y)(*f)(x,y)将两者的工作,无论是否f被宣布为一个函数或函数指针.

所以,我的问题是:这个提案有什么问题?你能想到的例子,其中会有致命之间的歧义ps.xs.x,或者为什么保持强制区别,否则有用吗?

c struct

55
推荐指数
7
解决办法
1942
查看次数

如何在没有错误格式的情况下将源代码粘贴到vim?

当我复制一个python代码,并粘贴到vim.缩进都是错误.但我粘贴到emacs或gedit,这是对的.

这很难描述,让我们看一下截图.注意:蓝色和黄色线只是使用"缩进指南插件". 截图

这是源代码示例:

import threading
import time
class timer(threading.Thread): #The timer class is derived from the class threading.Thread
    def __init__(self, num, interval):
        threading.Thread.__init__(self)
        self.thread_num = num
        self.interval = interval
        self.thread_stop = False

    def run(self): #Overwrite run() method, put what you want the thread do here
        while not self.thread_stop:
            print 'Thread Object(%d), Time:%s/n' %(self.thread_num, time.ctime())
            time.sleep(self.interval)
    def stop(self):
        self.thread_stop = True


def test():
    thread1 = timer(1, 1)
    thread2 = timer(2, 2)
    thread1.start()
    thread2.start()
    time.sleep(10)
    thread1.stop()
    thread2.stop()
    return

if __name__ == '__main__': …
Run Code Online (Sandbox Code Playgroud)

vim indentation

23
推荐指数
2
解决办法
4576
查看次数

Git +大数据集?

我们经常处理一个项目,我们已经处理了一个大型数据集(例如,每个1GB的少量文件),并且正在编写代码来分析它.

所有分析代码都在Git中,因此每个人都可以检查我们的中央存储库的更改.但是如何处理代码正在使用的数据集?

我想要存储库中的数据:

  • 当用户首次克隆存储库时,数据应该随附.
  • 数据不是100%只读; 现在,然后更正数据点,或发生轻微的格式更改.如果数据发生微小变化,应在下次结账时通知用户.

但是,我不想要git存储库中的数据:

  • git克隆一个备用副本(所以我的主目录中有两个版本)将提取我已有的几GB数据.我宁愿将它放在固定位置[设置数据必须在〜/ data中的规则]或根据需要添加链接.
  • 使用存储库中的数据,可能无法复制到拇指驱动器,这在我只处理一百行代码时很烦人.
  • 如果修复了错误的数据点,我将永远不会再次查看错误的版本.可以在纯文本文件中或由提供数据的人(或根本不是)来跟踪对数据集的更改.

我似乎需要一个带有代码主存储库的设置和一个数据辅助存储库.是否可以在git或POSIX中优雅地实现这一点的任何建议或技巧?我所想到的一切都是这样或那样的.

git version-control dataset

20
推荐指数
2
解决办法
3820
查看次数

shell是'source` POSIX标准吗?

我花了一些时间搜索的外壳POSIX标准source.命令,我在这一点上相信,他们只是没有在那里.

有没有不支持的贝壳.?什么是在当前环境中执行shell脚本的POSIX标准方法(即,不生成子shell,所以如果脚本说export VAR=value然后VAR存在于调用shell中)?

我可能会遗漏一些明显的东西,但事实证明这.对谷歌来说并不容易......

unix shell posix

18
推荐指数
2
解决办法
4140
查看次数

C11匿名结构通过typedef?

C11标准中添加了匿名结构,因此

typedef struct { 
    struct {int a, b};
    int c; 
} abc_struct;
Run Code Online (Sandbox Code Playgroud)

是有效和标准的.使用typedef代替完整的struct声明是否也在标准范围内?例如:

typedef struct { 
    int a, b;
} ab_struct;

typedef struct { 
    ab_struct;
    int c; 
} abc_struct;
Run Code Online (Sandbox Code Playgroud)

GCC文档说这是Plan 9的扩展,但它在我尝试过的少数编译器中工作(包括GCC ......).通过我对标准本身的阅读,我认为没关系,但这是一种容易搞砸的近距离阅读.

c struct c11

15
推荐指数
1
解决办法
5175
查看次数

如何从C创建新的R环境?

我无法找到这方面的文件.它看起来像R源代码使用NewEnvironmentR_NewHashedEnv,但它们都不在公共标题中,所以看起来它们不能作为用户使用.我应该使用什么功能(或什么行代码)来生成新的ENVSXP?

c r

6
推荐指数
1
解决办法
235
查看次数

标签 统计

c ×3

struct ×2

c11 ×1

dataset ×1

git ×1

indentation ×1

posix ×1

r ×1

shell ×1

unix ×1

version-control ×1

vim ×1