2014-10-17 4 views
0

: 당신이 상수가 아닌 값으로 그들에게 를 초기화 할 수 있도록 프로그램이 주 전에 시작할 때main이 시작되기 전에 gsl_vector_alloc을 호출 할 수없는 이유는 무엇입니까? 21 세기의 C 책에서

정적 변수, 함수의 심지어 내부, 를 초기화된다.

//this fails: can't call gsl_vector_alloc() before main() starts 
static gsl_vector *scratch = gsl_vector_alloc(20); 

왜 메인이 시작되기 전에 호출 할 gsl_vector_alloc 수없는 이유는 무엇입니까?

+1

비수가 값을 생성하기 때문에. 또 뭐야? – Quentin

답변

1

책에서 인용 한 내용이 답입니다. 즉 C 표준을 준수하지 않았기 때문입니다.

All the expressions in an initializer for an object that has static storage 
duration shall be constant expressions or string literals. 

그러나 나는이 상황이 특정 조건 하에서 C++에서 가능하다고 생각하지만.