나는 이것이 아직 중복되지 않았다고 상상할 수는 없지만 C++에 대한보다 복잡한 시나리오가 토론을 지배하는 것처럼 보이기 때문에 쉽게 대답을 찾을 수 없습니다 .C에서 임시 (화합물 리터럴) 매개 변수의 주소를 가져 가기
C99에서 함수 호출의 매개 변수 목록에 임시로 생성 된 주소를 가져 오는 것이 합법적입니까? 예를 들어
, init_list
또는 init_desig_init
등 같은은 다음과 같습니다
typedef struct {
int x;
int y;
} point_t;
int manhattan(point_t *p) {
return p->x + p->y;
}
int init_list() {
return manhattan(&(point_t){1, 2});
}
int init_desig_init() {
return manhattan(&(point_t){.x = 1});
}
빅 3 1seem to compile it OK하지만 실제로 임시의 수명이에 확장 될 것이라고 설명 참조를 찾을 수 없습니다 최소한 함수 호출을 통해.
0이 MM 아래로 답변에 따라, 나오는 것에 따라
내 검색 문제의 부분은 내가, 한 임시에 대한 정보를 찾고 있었다 때문에 잠시이 특정에 대한 올바른 C 용어 초기화 구문은 복합 문자 리터럴입니다.
MSVC를 기준으로 "큰 크로스 플랫폼 3"이라고해야하지만 사실은 "C 컴파일러는 godbolt를 지원합니다"라는 의미입니다.
당신이있어 대답은 훌륭하지만 염두에두고 가치가 거의 잡았다가있다 보다 광범위하게 복합 리터럴을 사용하기 시작할 때 : http://stackoverflow.com/questions/34880638/compound-litetime-lifetime-and-if-blocks – Art
@Art - 아주 좋은 지적입니다. C++의 임시 리터럴 대 C++의 임시 리터럴에 대한 다른 평생 규칙을 기억하려고 애 쓰지 않은 경우 ... – BeeOnRope