2012-06-12 3 views
6

를 만드는 방법은 다음 줄 시도 :
static const const char* values[];
을하지만 난 VC++ 경고 C4114에 다음과 같은 경고를 얻을 : 같은 종류 규정 한 번 이상 사용했다.
올바른 선언은 무엇입니까?

편집 : 왼쪽이 속한 :
는 목표는는 const를 문자의 const 정적 배열 *

+0

뭘 만들려합니까? 상수 문자에 대한 상수 포인터의 배열? –

답변

13

const const 대신 또한

(당신이 포인터와 const 같은 기본 값을 정의) static const char* const values[];, 당신은 그것을 초기화해야합니다

static const char* const values[] = {"string one", "string two"};

+0

+1과 동일하지만 초기화는 컨텍스트에 달려 있습니다. 클래스의 '정적'멤버 (내 추측)가 아니라면 초기화되지 않습니다. 선언에서 할 수 있습니다 ... –

+0

정확하게 이해합니까, 첫 번째 const는 문자열에 대한 것이고 두 번째 것은 배열에 대한 것입니까? – Tommy

+7

키워드'const'를 명확히하기 위해 :'const'는 항상 왼쪽에있는 "item"과 관련이 있습니다. 예외적으로, const가 표현식의 첫 번째 단어 일 때, 그 단어는 바로 그 단어와 관련이 있습니다. 그래서 극도로 정확하려면 문자열을'static char const * const values ​​[]'로 정의하면 오른쪽에서 왼쪽으로 읽을 수 있습니다 : values는 const char에 대한 const 포인터의 배열이며이 모든 것은 정적입니다. – AquilaRapax

4

아이디어는 *의 양쪽 옆에있는 두 개의 const의를 배치하는 것입니다
static const char* const values[]; 

시도 C 문자열의 불변의 배열을 만드는 것입니다 char (상수 문자), 오른쪽은 char* (상수 포인터 대문자)에 속합니다.

+2

제쳐두고 이것은'static char const * const values ​​[]' – Dennis

관련 문제