返回信息流比如说我要在文件file.c内使用windows.h声明的GetStdHandle函数,那么我该如何单独把这个函数extern出来?
是在对应的头文件file.h?还是该源文件file.c?
是直接把函数声明复制过来然后加个extern还是?
这是一条镜像帖。来源:北邮人论坛 / cpp / #102516同步于 2023/2/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
如何理解“避免包含重量级的平台头文件,如windows.h或d3d9.h等
matsurisu
2023/2/25镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
这是某个公司的编程规范吗?
我觉得没什么道理。除非是上个世纪90年代,编译器还很弱,随便include一个大的头文件就编译很慢。对于现代的CPU和编译器来说,C语言随便include,没事。include windows.h都没事。C++的话倒是由于模板、内联函数什么的,头文件多了,编译就会很慢。
别搞什么“extern函数到源文件内”。头文件应该是对接口的唯一定义,你永远不应该为了使用其中某个函数而手动定义extern T blahblah(....);
好的,蟹蟹
【 在 nuanyangyang 的大作中提到: 】
: 这是某个公司的编程规范吗?
: 我觉得没什么道理。除非是上个世纪90年代,编译器还很弱,随便include一个大的头文件就编译很慢。对于现代的CPU和编译器来说,C语言随便include,没事。include windows.h都没事。C++的话倒是由于模板、内联函数什么的,头文件多了,编译就会很慢。
: ............
这是我在网上看到的,因为在写一个逻辑相对复杂的小玩具
之前代码都写在一个文件里,读起来极其费力,就开始按模块拆分,再加上cmake,看到那篇文章也觉得感觉好厉害,但是那句话不太搞得懂
【 在 nuanyangyang 的大作中提到: 】
: 这是某个公司的编程规范吗?
: 我觉得没什么道理。除非是上个世纪90年代,编译器还很弱,随便include一个大的头文件就编译很慢。对于现代的CPU和编译器来说,C语言随便include,没事。include windows.h都没事。C++的话倒是由于模板、内联函数什么的,头文件多了,编译就会很慢。
: ............
一般来说,C语言的.h文件和.c文件一一对应。.h文件里只声明对应的.c文件里定义的函数。
另外,要不要试一个没有头文件的语言,比如zig?
【 在 matsurisu 的大作中提到: 】
: 这是我在网上看到的,因为在写一个逻辑相对复杂的小玩具
: 之前代码都写在一个文件里,读起来极其费力,就开始按模块拆分,再加上cmake,看到那篇文章也觉得感觉好厉害,但是那句话不太搞得懂
对,我目前已经按这一原则完成了拆分,再加上自己画画图,基本就梳理清楚了代码的架构
zig还是第一次听,稍微看了看是一个加强版的c?稍后再进一步了解
【 在 nuanyangyang 的大作中提到: 】
: 一般来说,C语言的.h文件和.c文件一一对应。.h文件里只声明对应的.c文件里定义的函数。
: 另外,要不要试一个没有头文件的语言,比如zig?
另外推一手自己的项目,https://github.com/123sleaf-123/ChineseChess-
是个命令行的c语言象棋,预定的悔棋和ai还没做完
水平有限,比较简陋
【 在 nuanyangyang 的大作中提到: 】
: 一般来说,C语言的.h文件和.c文件一一对应。.h文件里只声明对应的.c文件里定义的函数。
: 另外,要不要试一个没有头文件的语言,比如zig?
那如果是C++咋办,项目一旦大起来真的不好限制,只能用pch或者unity之类的解决吗
【 在 nuanyangyang 的大作中提到: 】
: 这是某个公司的编程规范吗?
: 我觉得没什么道理。除非是上个世纪90年代,编译器还很弱,随便include一个大的头文件就编译很慢。对于现代的CPU和编译器来说,C语言随便include,没事。include windows.h都没事。C++的话倒是由于模板、内联函数什么的,头文件多了,编译就会很慢。
: 别搞什么“extern函数到源文件内”。头文件应该是对接口的唯一定义,你永远不应该为了使用其中某个函数而手动定义extern T blahblah(....);
: ...................
PCH是一种解决方案。
也可以看看C++20的module。
或者干脆放弃C++改用Rust。Rust的move语义比C++好得多。
【 在 Nroskill 的大作中提到: 】
: 那如果是C++咋办,项目一旦大起来真的不好限制,只能用pch或者unity之类的解决吗
: