2017-02-19 1 views
1

매개 변수 데이터 (전송률, 중량 등과 같은 차량 데이터)에 상수 구조체를 사용하는 프로그램이 있습니다.C - return 변수를 const로 설정하십시오.

프로그램이 다른 차량 모델 용으로 사용되기 때문에 구조체를 반환 값으로 제공하는 함수를 호출하여 txt 파일에서 매개 변수 데이터를 읽으 려합니다.

메인 프로그램에서 구조체를 'const'로 선언 할 수 있습니까? 진행 과정에서 이러한 구조체에 아무런 변화가 없다는 것을 보장하기 위해 그렇게하고 싶습니다.

추가 정보 : 코드의 기본 응용 프로그램에서 매개 변수 데이터는 하드 코딩됩니다. 따라서 상수 struct가 지금 사용됩니다.

+0

는 네, 그것은 가능합니다. 그것들을'const'로 정의하고 파일을 파싱하는 함수의 반환 값으로 초기화 할 수 있습니다. 최적화시 추가 사본을 생략해야합니다. – StoryTeller

+0

@StoryTeller C에서? 확실합니까? 'const'는 이니셜 라이저 표현식에서 상수 표현식과 문자열 리터럴 만 허용한다는 점에서 매우 제한적입니다. 따라서 이것이 작동하지 않을 것이라고 생각합니다. C++에서는 네가 있지만 C에서는 그렇지 않습니다. – Downvoter

+0

답장을 보내 주셔서 감사합니다! 그렇지 않다면 구조체를 변경하지 않았 음을 보장하는 또 다른 방법이 있습니까? –

답변

0

예, 함수의 반환 값으로 const를 초기화 할 수 있습니다. 그러나 반환 값을 const에 할당 할 수는 없습니다.

예 :

#include <stdio.h> 

int foo() 
{ 
    return 42; 
} 

int main(void) { 
    const int g = foo(); // OK for initializing a const 
    printf("%d\n", g); 
    // g = foo();; <-- will cause compile error : assignment of read-only variable ‘g’ 
    return 0; 
} 
관련 문제