通过阅读-D_XOPEN_SOURCE 做什么/意味着什么?,我了解如何使用功能测试宏。
但是我还是不明白为什么我们需要它,我的意思是,我们可以启用所有可用的功能吗?然后文档是这样写的:这个功能只在Mac/BSD下可用,那个功能只在Linux下可用,如果你使用它,那么你的程序只能在那个系统上运行。
那么为什么我们首先需要一个功能测试宏呢?
从Python的源代码来看open
,我认为open
这只是一个普通的函数.
为什么我们可以像下面这样使用它?
with open('what_are_context_managers.txt', 'r') as infile:
for line in infile:
print('> {}'.format(line))
Run Code Online (Sandbox Code Playgroud)
因为既不是实现__enter__
也不是__exit__
,也不使用contextlib.contextmanager
装饰器.