C ++ 11에서 같은 줄에 전역 변수와 함수 프로토 타입을 선언 할 수 있습니까?
Aug 20 2020
C ++ 11 코드를 작성하는 동안 :
#include <bits/stdc++.h>
using namespace std;
int a, b, array[25];
int function();
int main() {
... (not important)
호기심 때문에 함수 프로토 타입과 같은 줄에 변수 선언을 넣었습니다.
#include <bits/stdc++.h>
using namespace std;
int function(), a, b, array[25];
int main() {
... (not important)
XCode ([-std = c ++ 11]로 설정)에서 제대로 컴파일되었으며 a, b, array[]
일반 변수 / 배열처럼 사용할 수 있습니다.
이것은 대부분의 / 모든 컴파일러에서 작동할까요? 왜 이것이 C ++에서 작동합니까 (함수 프로토 타입과 변수 선언이 상당히 다르게 보입니다 ...)
시간 내 주셔서 미리 감사드립니다.
답변
2 molbdnilo Aug 20 2020 at 13:54
선언은 말한다 function(x)
, a
, b
, 그리고 array[i]
모두 int
들.
(이것은 유형의 "구식 읽기"입니다. 항상 C에서 작동하지만 C ++에서 깨뜨 렸습니다. int *x
읽을 수있는 " *x
은 int
"이지만 int &x
읽을 수는 없습니다 . " &x
는 int
"입니다.)
이것은 C의 초기 (반세기 정도)부터 괜찮 았으며 글로벌 선언에 국한되지 않습니다.
또한 매우 혼란스럽고 좋은 생각이라고 생각하는 사람들을 많이 찾지 못할 것입니다.
대부분의 사람들은 이제 한 줄에 둘 이상의 변수를 선언하는 것을 포기했습니다.
가독성이 떨어지고 이니셜 라이저를 잊어 버리기 쉬우 며 요즘에는 화면에 여러 줄을 동시에 표시 할 수 있습니다.