V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Shazoo  ›  全部回复第 7 页 / 共 25 页
回复总数  487
1 ... 3  4  5  6  7  8  9  10  11  12 ... 25  
@fantastM

「将外部变量的 **声明** 与 **定义** 严格区分开来很重要。变量声明用于说明变量的属性(主要是变量的类型),而变量定义除此以外还将引起存储器的分配」

这句话是新手向的教条。实际上,你只需要知道以下:
某个 var 被定义也好,extern 引用也好,在编译阶段都是无差别的。只是告知编译器,有这么个变量,你知道这货是啥玩意后,tm 别报错。
在链接阶段,extern 无用,应该有且仅有一个定义。这是因为,链接就需要确定这个变量真实地址位置了。多个的话,自然是不现实的。

工程上多人配合,一般应用范围广的全局变量都是有个专门的 extern 用的 h,和定义用的 C 。适合 5w 量级的项目。你可以试试,傻瓜化,也好用,不过量级上去了,改动就重编译,也很烦。


储备知识的话,还是多用多看吧。回想起来,C 也没有特别适合学习的开源代码。要不学习下嵌入式?这领域里面很多不错的 C Project 。
C 语言的写法其实是直接面向编译器和链接器的。

像是.h 文件也好,.x 文件也好,include 后,都是等同于预编译阶段将目标文件内容递归拷贝到当前位置。(是的,你可以直接 include .c 文件,很多嵌入式领域直接利用宏来 include 不同 c 文件,用来配置 rom 某处的 payload 。没错,你都可以指定某个巨型数组 link 到绝对地址内。

所以,C 不存在什么 interface 之类的玄学概念。每次编译,其实就是编译一个完完整整的庞大无比的标准 C 文件。( so,你改动一个很多文件都 include 的头文件,会造成所有 C 文件重编译)

同理,static 在编译器内的规则很简单,限制不能被其他文件调用即可;在 linker 里面,实际上是根据不同 linker 自己去定义。大致理解为 link 到全局堆内分配。

C 很有趣,各种魔幻写法,lz 类比 java 有点不合理,java 在 C 程序员眼里才是玄学,各种限制。学 C,类比汇编可能好些。

可以复习下编译原理和体系结构再学 C 。
2021-03-03 16:33:21 +08:00
回复了 csulyb 创建的主题 程序员 现在有没有好的跨平台的 UI 库
2 年前,也纠结 QT 还是 Electron 。最后选了 Electron……

好吧,这个项目到现在都还没结束……您细品。
@goodboy95 多谢多谢。
好奇,什么是“方法复杂度”?时间复杂度倒是经常得评估下。

什么叫做 400 行 ,100 多的复杂度?这是什么量化标准?
2021-01-25 13:38:50 +08:00
回复了 puduhe1 创建的主题 推广 39 岁程序员创业产品请大家提提意见!目前已有流水
明年再用。月初今年费用都全交了。
2021-01-23 09:31:37 +08:00
回复了 artms 创建的主题 程序员 有没有能把 onedrive 当成 cos 用的代码
@artms 最近刚做了个 OneDrive 当 Typora 图床的小工具。上面的是其中代码,C 程序员写 python,凑合看吧。

Graphic API 麻烦的是认证授权部分。建议用 code 方案,最简单。

直连方案,可能需要服务器配合(因为直连链接是几次 302 和 url 替换,其中有部分不可描述了,我是用香港服务器搞定的)

1drv.ws 这个服务很不错,可是貌似有缓存,我这里出现几次跳转链接不更新了。所以还是自建比较好。
2021-01-23 09:28:06 +08:00
回复了 artms 创建的主题 程序员 有没有能把 onedrive 当成 cos 用的代码
用 Graphic API 。

``` python
def get_upload_session_url(path, filename):
url = f"https://graph.microsoft.com/v1.0/me/drive/root:/{config['root_path']}/{path}/{filename}:/createUploadSession"
payload = {
"item" : {
"@microsoft.graph.conflictBehavior": "replace",
"name": filename
}
}
resp = r.post(url, headers=add_token_header({'Content-Type': 'application/json'}), data=json.dumps(payload))
return json.loads(resp.content)['uploadUrl']

def upload_file_body(upload_url, localfile):
f = open(localfile, 'rb')
data = f.read()
headers = {
'Content-Length':f'{len(data)}',
'Content-Range': f'bytes 0-{len(data)-1}/{len(data)}'
}
resp = r.put(upload_url, data=data, headers=headers)
f.close()
return json.loads(resp.content)['id']
```

上传的核心代码。是适合大文件的那种。
2020-12-31 10:10:06 +08:00
回复了 alexkuang 创建的主题 分享创造 写了个脚本, Gmail 中用自己的域名自动分类邮件
这个和 Gmail 自带的 filter 比,有啥优势?
2020-12-30 18:10:42 +08:00
回复了 idblife 创建的主题 分享发现 youtube music 的推荐算法比网易云不知道高到哪里去了
wow,竟然可以用了。之前说所在区域不支持。
2020-12-15 09:40:54 +08:00
回复了 fat4fox 创建的主题 晒晒更健康 晒晒大家主力电脑的配置吧!
和楼主的配置一模一样(内存少了)。用了 5 年。昨天更换了 nuc10i7+16+512 。楼主可以酸了……
2020-12-01 15:00:29 +08:00
回复了 typetraits 创建的主题 Chrome 准备做个定制版 Chromium
@typetraits
楼主,我这里有个需求,需要定制下 Chromium,配合 headless 模式做些业务。请问有时间吗?
项目本身肯定付费,可以签订正式外包合同。

如果有兴趣,回复我下。我会留给你联系方式。

谢谢。
定时起停 proxifier 。
2020-11-19 09:37:44 +08:00
回复了 keepwalk2020 创建的主题 分享创造 用 kindle 写作?运行在 kindle 平台上的文本编辑器 N31_KTe
比 kindle 自带的输入法快吗?目前 kindle 下的输入速度只适合佛系人才。
2020-11-19 09:27:29 +08:00
回复了 xiyuesaves 创建的主题 分享创造 一个根据奇葩需求写出来的奇葩玩意...
很典型的坑。

甲方不想透露应用场景自己给出的“技术解决方案”。

如果开发前确定好边界,还能凑合着做一套,也别指望回头客。
1 ... 3  4  5  6  7  8  9  10  11  12 ... 25  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1000 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 22:47 · PVG 06:47 · LAX 14:47 · JFK 17:47
Developed with CodeLauncher
♥ Do have faith in what you're doing.