typename varname /* 공백 */
varname varname /* 공백연산자로 처리 */
constant varname /* 공백연산자로 처리 */
varname constant /* 공백연산자로 처리 */
"문자열" "문자열" /* 기존대로 문자열 결합 연산자로 처리 */
constant ++varname /* 공백연산자로 처리 */
++varname constant /* 공백연산자로 처리 */
constant --varname /* 공백연산자로 처리 */
--varname constant /* 공백연산자로 처리 */
constant - -varname /* 공백 */
constant + ++varname/* 공백 */
constant-- - --varname /* 공백 */
constant-- --varname /* 공백연산자로 처리 */
constant &varname /* 공백연산자로 처리 */
constant & varname /* 공백 */
constant *varname /* 공백연산자로 처리 */
constant * varname /* 공백 */
// 공백연산자로 처리할때 공백연산자 오버로딩이 없다면 문법오류로 판단
공백과 다른 연산자 또는 복합할당 연산자가 붙은 경우는 모두 일반 공백으로만 처리
예)
varname, varname
varname = varname
varname * varname
varname / varname
varname % varname
varname + varname
varname - varname
varname ^ varname
varname *= varname
...
varname ^= varname
varname . varname
varname -> varname
varname ? varname : varname
...
등등 모든 연산자
충돌 가능성이 있는 문법을 제시 해주실 수 있는 분이 있다면 대단히 감사하겠습니다.
충돌 가능성에 대해 찾아보고 오류가 안나게끔 규약을 만들면 되겠죠?
개인적으로 우선순위에 대한 고려만 제대로 한다면 괜찮은 연산자가 되지 않을까 싶습니다.
공백 연산자에 대해 궁금할 경우 다음 글을 봅니다.
http://gall.dcinside.com/board/view/?id=programming&no=503638
컴파일시에 오버헤드가 걱정된다면 컴파일러 옵션에 공백연산자에 대한 옵션을 줄 경우만 활성화 되거나
#pragma 로 옵션을 제어하면 됩니다.
그리고 딱히 이방법이 아니더라도 오버헤드를 줄인 방법은 많습니다.
댓글 0