영어프랑스어스페인어

Ad


온웍스 파비콘

c++decl - 클라우드에서의 온라인

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터를 통해 OnWorks 무료 호스팅 공급자에서 c++decl 실행

이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 c++decl 명령입니다.

프로그램:

이름


cdecl, c++decl - C 및 C++ 유형 선언 작성

개요


cdecl [-a | -+ | -p | -r] [-ciqdDV]
[[ 파일 ...] | 설명 ... | 알리다 ... | 캐스트 ... | 세트 ... | 도움 | ? ]
C++ 선언 [-a | -+ | -p | -r] [-ciqdDV]
[[ 파일 ...] | 설명 ... | 알리다 ... | 캐스트 ... | 세트 ... | 도움 | ? ]
설명 ...
알리다 ...
캐스트 ...

기술


Cdecl (그리고 C++ 선언)는 C(또는 C++) 유형 선언을 인코딩 및 디코딩하는 프로그램입니다.
C 언어는 X3J11 ANSI 표준(초안 제안)을 기반으로 합니다. 선택적으로 C
언어는 Kernighan & Ritchie's에서 정의한 사전 ANSI 정의를 기반으로 할 수 있습니다. XNUMXD덴탈의 C
프로그램 작성 지원하는 언어 책 또는 Ritchie PDP-11 C 컴파일러에 의해 정의된 C 언어.
C++ 언어는 Bjarne Stroustrup의 XNUMXD덴탈의 C + + 프로그램 작성 지원하는 언어, 플러스
언어에 버전 2.0 추가.

옵션


-a C 언어의 ANSI C 방언을 사용합니다.

-p Kernighan & Ritchie의 책에서 정의한 pre-ANSI 방언을 사용합니다.

-r Ritchie PDP-11 C 컴파일러에서 정의한 방언을 사용합니다.

-+ C가 아닌 C++ 언어를 사용합니다.

-i 대화형 모드에서 실행합니다(터미널에서 읽을 때 기본값). 이거 역시
프롬프트, 라인 편집 및 라인 히스토리를 켭니다.

-q 프롬프트를 조용하게 합니다. 대화식 모드에서 프롬프트를 끕니다.

-c 컴파일 가능한 C 또는 C++ 코드를 출력으로 생성합니다. Cdecl 끝에 세미콜론을 추가합니다
함수 정의의 끝 부분에 선언 및 중괄호 쌍.

-d 디버깅 정보를 켭니다(컴파일된 경우).

-D YACC 디버깅 정보를 켭니다(컴파일된 경우).

-V 버전 정보를 표시하고 종료합니다.

불러내기


Cdecl 여러 다른 이름으로 호출할 수 있습니다(실행 파일의 이름을 바꾸거나
또는 그것에 대한 심볼릭 링크 또는 하드 링크 생성). 다음과 같이 호출되는 경우 cdecl 그러면 ANSI C는
기본 설정 언어. 다음과 같이 호출되는 경우 C++ 선언 그러면 C++가 기본값입니다. 호출되는 경우
어느 쪽이든 설명, 캐스트알리다 그런 다음 나머지 명령줄을 해석합니다.
옵션을 해당 명령에 대한 매개변수로 지정하고 명령을 실행하고 종료합니다. 그것은 또한 할 것이다
이것은 명령줄의 첫 번째 비전환 인수가 이 세 명령 중 하나인 경우입니다.
입력은 파일에서 올 수도 있습니다.

Cdecl 아래에 설명된 언어로 된 명령문에 대해 명명된 파일을 읽습니다. ㅏ
해당 언어에서 C(C++) 또는 유사 영어로 변환됩니다. 의 결과
이 변환은 표준 출력에 기록됩니다. 파일 이름이 없거나 파일 이름인 경우
``-''의 경우 표준 입력을 읽습니다. 표준 입력이 a에서 오는 경우
터미널, (또는 -i 옵션이 사용됨), 프롬프트는 각 전에 터미널에 기록됩니다.
선. 프롬프트는 다음으로 끌 수 있습니다. -q 옵션(또는 세트 갑자기 명령). 만약에
cdecl 다음과 같이 호출됩니다. 설명, 알리다 or 캐스트, 또는 첫 번째 인수는 명령 중 하나입니다.
아래에 설명된 대로 인수 목록은 표시된 문법에 따라 해석됩니다.
파일 이름 대신 아래에.

대화식으로 실행될 때, cdecl GNU readline 라이브러리를 사용하여 키워드를 제공합니다.
완료 및 명령줄 기록과 매우 유사 세게 때리다(1) (qv). TAB을 누르면
하나 이상의 가능한 경우가 아니면 커서 앞에서 부분 키워드를 완성하십시오.
이 경우 두 번째 TAB에 가능한 완료 목록이 표시되고
명령줄을 다시 표시합니다. 왼쪽 및 오른쪽 화살표 키와 백스페이스를 사용할 수 있습니다.
자연스러운 방식으로 편집하고 위쪽 및 아래쪽 화살표 키는 이전 명령줄을 검색합니다.
역사에서. Ctrl-U와 같은 대부분의 다른 친숙한 키는
커서를 줄의 시작 부분으로 되돌리면 예상대로 작동합니다. 사이에 모호성이 있습니다.
전에, INT으로 키워드, 하지만 cdecl 당신이 의미하는 것을 추측하고 항상 추측합니다
바르게.

당신이 사용할 수 cdecl 다음과 같은 편집기로 C 프로그램을 만들 때 vi(1) 또는 이맥스(1). 너
의사 영어 버전의 선언을 입력하고 적용하십시오. cdecl 필터로
라인에. (안에 vi(1), `` 입력!!cdecl''.)

경우 만들 프로그램 선택권 -c 가 사용되면 출력 뒤에 세미콜론이 포함됩니다.
함수 선언 후 변수 선언 및 중괄호 쌍.

XNUMXD덴탈의 -V 옵션은 프로세스를 만드는 데 사용된 파일의 버전 번호를 인쇄합니다.
디버깅 정보를 켜고 소스를 컴파일하면 -d 옵션이 활성화됩니다
출력되게 합니다. YACC 디버깅 정보를 켜고 소스를 컴파일하면
-D 옵션을 선택하면 출력할 수 있습니다.

COMMAND 언어


언어에는 XNUMX개의 문장이 있습니다. 그만큼 알리다 문은 C 유형을 구성합니다.
자세한 설명에서 선언. 그만큼 캐스트 문은 다음과 같이 C 유형 캐스트를 구성합니다.
식으로 나타날 수 있습니다. 그만큼 설명 명령문은 C 유형 선언을 디코딩하거나
자세한 설명을 생성하는 캐스트. 그만큼 도움 (또는 ?) 문은 도움말을 제공합니다
메시지. 그만큼 종료 (또는 출구) 문(또는 파일 끝)은 프로그램을 종료합니다. 그만큼 세트
명령문을 사용하면 명령줄 옵션을 대화식으로 설정할 수 있습니다. 각 진술은
세미콜론 또는 줄 바꿈으로 구분됩니다.

동의어


선언 중에 일부 동의어가 허용됩니다.

문자는 char의 동의어입니다.
상수는 const와 동의어입니다.
열거형은 열거형과 동의어입니다.
func는 함수의 동의어입니다.
정수는 int와 동의어입니다.
ptr은 포인터의 동의어입니다.
ref는 참조와 동의어입니다.
ret는 반환과 동의어입니다.
구조체는 구조체와 동의어입니다.
벡터는 배열과 동의어입니다.

TAB 완성 기능은 오른쪽 열에 있는 키워드에 대해서만 알고 있습니다.
왼쪽 열에 있는 구조가 아닙니다. TAB 완성은
서로 다른 키워드의 선행 문자가 동일함(키워드가 하나와 충돌함)
다른), 두 열을 모두 넣으면 꽤 많은 충돌이 발생합니다.

문법


다음 문법은 언어를 설명합니다. 문법에서 "<>"의 단어는
터미널, 맨 소문자 단어는 그 자체를 의미하는 터미널입니다. 맨 대문자
단어는 다른 어휘 토큰입니다. NOTHING은 빈 문자열을 의미합니다. NAME은 C 식별자를 의미합니다.
NUMBER는 XNUMX진수 문자열을 의미합니다. NL은 개행 또는 세미콜론을 의미합니다.
자.

::= 아무것도
| NL
::= 아무것도
| NAME을 다음과 같이 선언
| 선언하다
| 에 NAME 캐스팅
| 깁스
| 설명하다
| 설명하다
| 설명하다 ( ) 선택적 이름
| 세트
| 도움말 | ?
| 그만두다
| 출구
::= 배열
| 배열 NUMBER개
| 함수 반환
| 기능 ( ) 반환
| 포인터
| 클래스 NAME의 멤버에 대한 포인터
| 참조
|
::=
| *
| 이름 :: *
| &
::= ( )
| ( )
| [ ]
| [ 숫자 ]
| ( )
| 이름
::= 아무것도
| ( )
| ( ) ( )
| ( ) ( )
| ( )
| 이름 :: *
| *
| &
| [ ]
| [ 숫자 ]
::= |
|
| 구조체 이름 | 조합 이름 | 열거 이름 | 클래스 이름
::= ,
|
|
::= ,
| 아무것도 아님
|
|
| ~처럼
::= 정수 | 문자 | 더블 | 플로트 | 무효의
::= |
::= 짧게 | 긴 | 서명되지 않은 | 서명 |
::= | 아무것도 아님
::= 상수 | 휘발성 | 노알리아스
::= 자동 | 외부인 | 등록 | 공전
::= 아무것도 |
::= 아무것도 |
| 만들기 | nocreate
| 프롬프트 | 갑자기
| 리치 | 프리안시 | 안시 | 씨플러스플러스
| 디버그 | 노드버그 | 이디버그 | 노이디버그

SET를 옵션


XNUMXD덴탈의 세트 명령에는 몇 가지 옵션이 있습니다. 입력할 수 있습니다 세트 or 세트 옵션
현재 선택된 옵션 및 사용 가능한 옵션 요약. 첫번째
XNUMX개는 에 해당한다 -a, -p, -r-+ 각각 명령줄 옵션.

ansi C 언어의 ANSI C 방언을 사용합니다.

프리안시
Kernighan & Ritchie의 책에서 정의한 사전 ANSI 방언을 사용하십시오.

리치
Ritchie PDP-11 C 컴파일러에서 정의한 방언을 사용합니다.

씨플러스
C가 아닌 C++ 언어를 사용하십시오.

[아니오]프롬프트
대화식 모드에서 프롬프트를 켜거나 끕니다.

[아니요]생성
선언에 세미콜론 또는 중괄호 추가를 켜거나 끕니다.
출력 cdecl. 이것은 다음에 해당합니다. -c 명령 행 옵션.

[아니오]디버그
디버깅 정보를 켜거나 끕니다.

[아니요]yydebug
YACC 디버깅 정보를 켜거나 끕니다.

참고: 디버깅 정보 및 YACC 디버깅 정보는 다음이 있는 경우에만 사용할 수 있습니다.
로 컴파일되었습니다 cdecl. 마지막 두 옵션은 -d-D 명령 줄
각각 옵션. 디버깅 정보는 일반적으로 프로그램 개발에 사용되며,
일반적으로 분산 실행 파일로 컴파일되지 않습니다.

사용 예


다음과 같은 함수에 대한 포인터 배열을 선언하려면 Malloc(3), 할

char에 대한 포인터를 반환하는 함수에 대한 포인터의 배열로 fptab을 선언합니다.

이 명령의 결과는

문자 *(*fptab[])()

다른 사람의 코드에서 이 선언을 보면 다음과 같이 이해할 수 있습니다.
하기

설명 문자 *(*fptab[])()

에 대한 적절한 선언 신호(2) 함수 프로토타입을 무시하고 다음에서 쉽게 설명합니다.
cdecl님의 언어:

void를 반환하는 함수에 대한 포인터를 반환하는 함수로 신호 선언

생산하는

무효 (*신호())()

결과에 두 세트의 빈 괄호가 있는 함수 선언. 의 저자
이러한 함수는 매개변수를 어디에 두어야 하는지 궁금할 수 있습니다.

신호를 함수(arg1,arg2)로 선언하여 void를 반환하는 함수에 대한 포인터 반환

다음 솔루션을 제공합니다( -c 옵션):

무효 (*신호(인수1,인수2))() { }

함수 프로토타입에 추가하려는 경우 다음과 같은 함수에 대한 함수 프로토타입
as _출구(2)는 다음과 같이 선언됩니다.

_exit를 함수로 선언(retvalue를 int로) 반환하는 void

주는

무효 _exit(int retvalue) { }

함수 프로토타입을 사용하는 더 복잡한 예로서, 신호(2)는 다음과 같이 완전히 정의될 수 있습니다.

신호를 함수로 선언(x를 int로, y를 함수에 대한 포인터(int)로 void 반환)
function(int)에 대한 포인터 반환 void 반환

제공 (-c 사용)

void (*signal(int x, void (*y)(int )))(int ) { }

Cdecl "const" 및 "volatile" 한정자를 어디에 두어야 하는지 파악하는 데 도움이 될 수 있습니다.
따라서 선언

foo를 const int에 대한 포인터로 선언

제공

const int *foo

동안

foo를 int에 대한 const 포인터로 선언

제공

int * const foo

C++ 선언 참조 선언에 도움이 될 수 있으므로

x를 문자에 대한 포인터에 대한 참조로 선언

제공

문자 *&x

C++ 선언 클래스 멤버에 대한 포인터를 도울 수 있으므로 포인터를
클래스 X의 정수 멤버

foo를 클래스 X int의 멤버에 대한 포인터로 선언

제공

정수 X::*푸



foo를 클래스 X 함수(arg1, arg2) 반환 포인터에 대한 포인터로 선언
클래스 Y

제공

클래스 Y *(X::*foo)(arg1, arg2)

진단


선언, 캐스트 및 설명 문은 그렇지 않은 구성을 지적하려고 시도합니다.
C에서 지원됩니다. 경우에 따라 실제로 의도한 것이 무엇인지 추측할 수 있습니다. 이것들 중에서
경우에 따라 C 결과는 시맨틱이 Algol-68에서만 작동하는 장난감 선언입니다. 그만큼
지원되지 않는 C 구문 목록은 사용 중인 C 언어 버전에 따라 다릅니다.
사용됨(ANSI, pre-ANSI 및 Ritchie 옵션 참조). 지원되는 C++ 구문 세트
다음을 제외하고 ANSI 집합의 상위 집합입니다. 노알리아스 예어.

참조


ANSI 표준 X3.159-1989(ANSI C)

ISO/IEC 9899:1990(ISO 규격)

comp.lang.c FAQ
http://www.eskimo.com/~scs/C-faq.top.html

C 참조 매뉴얼의 섹션 8.4 XNUMXD덴탈의 C 프로그램 작성 지원하는 언어 B. 커니건 &
D. 리치.

C++ 참조 설명서의 섹션 8 XNUMXD덴탈의 C + + 프로그램 작성 지원하는 언어 비.
Stroustrup.

경고


의사 영어 구문은 지나치게 장황합니다.

수행되지 않는 풍부한 의미 확인이 있습니다.

Cdecl ANSI C 표준이 완성되기 전에 작성되었으며 시도된 적이 없습니다.
최신 상태로 유지합니다. 그럼에도 불구하고 표준에 매우 가깝습니다.
예외 노알리아스.

Cdecl의 범위는 의도적으로 작습니다. 초기화를 파악하는 데 도움이 되지 않습니다. 그것
스토리지 클래스가 선언의 시작 부분에 있고 뒤에
const, volatile 및 noalias 한정자 뒤에 변수 유형이 나옵니다. Cdecl
가변 길이 인수 목록에 대해 아무것도 모릅니다. (여기에는 ``, ...''
통사론.)

Cdecl 당신이 말하는 모든 선언이 외부 정의로 사용될 것이라고 생각합니다.
C의 일부 선언 컨텍스트는 이보다 더 많은 유연성을 허용합니다. 이에 대한 예는 다음과 같습니다.

argv를 char 배열의 배열로 선언

어디에 cdecl 응답하다

경고: C에서 지원되지 않음 -- '지정되지 않은 크기의 내부 배열'
(어쩌면 "포인터 배열"을 의미할 수도 있습니다)
문자 인수[][]

잠정 지원 노알리아스 초안 ANSI에 있었기 때문에 키워드를 넣었습니다.
명세서.

작가


원래 Graham Ross가 작성했으며 David Wolverton, Tony Hansen이 개선 및 확장했습니다.
그리고 멀린 르로이.

David R. Conrad의 GNU readline 지원 및 Linux 포트,[이메일 보호]>

onworks.net 서비스를 사용하여 온라인에서 c++decl 사용


무료 서버 및 워크스테이션

Windows 및 Linux 앱 다운로드

Linux 명령

Ad