可以假设`stdin`,`stdout`和`stderr`的值是常量吗?

问题描述 投票:3回答:1

来自Ubuntu手册页stdin(3)

extern FILE *stdout;

来自mingw64 stdio.h文件:

#define stdout (&__iob_func()[1])

两者都表明stdout(一个指针)的值不能被认为是常数。

我仍然可以依靠这样的工作:

FILE * stream;

// early after startup
stream = stdout;

// much later, far down the stack, in a different function
fprintf(stream, "%s", "fprintf(stream, \"");
c stdio
1个回答
2
投票

这就是C11标准所说的(§7.21.1-3)(我自己的口音):

标准错误 标准输入 标准输出 它是“指向FILE的指针”类型的表达式,它们分别指向与标准错误,输入和输出流相关联的FILE对象。

© www.soinside.com 2019 - 2024. All rights reserved.