내 생산 코드의 목업 : GCC에서FILE ** 변수를 표준 출력으로 설정하는 방법은 무엇입니까?
/* version 1 */
#include <stdio.h>
FILE** fout = &stdout;
int main() {
fprintf(*fout, "hello\n");
}
작품 좋은,하지만 보도 (단항 '&'피연산자로 필요한 좌변)와 Mingw에서 컴파일에 실패.
나는 Is setting a FILE* equal to stdout portable?을 보았다. 이해하겠습니다.
/* version 2 */
#include <stdio.h>
int main() {
FILE* fout = stdout;
fprintf(fout, "hello\n");
}
은 완전히 유효합니다. 그러나 전역 변수를 미리 설정해야합니다. 불행히도
/* version 3 */
#include <stdio.h>
FILE* fout = stdout;
int main() {
fprintf(fout, "hello\n");
}
은 버전 1을 대체하기에 적합하지 않습니다. gcc (2 행 : 이니셜 라이저 요소가 상수가 아님)에서 컴파일되지 않습니다.
main()이 시작되기 전에 초기화되는 변수에 stdout을 얻는 방법을 알고 싶습니다.
표준 출력 스트림이 이미 열려 있습니다! 동시에 두 개의 stdout이 동시에 열릴 수는 없습니다. 아마도 #define을 사용하거나 단순히 main을 글로벌 var에 저장하게하십시오. main이 시작하기 전에 왜 시작해야합니까? –
메인 시작 전의 이유 : 라이브러리 작성자로서 라이브러리 코드에서 초기화 된 struct default_settings를 제공하고 다른 많은 매개 변수 설정 중에서'fout = stdout '을 포함하게됩니다. –