매크로 나 인라인 함수를 사용하여 C++에서 수행 할 수있는 작업은 네 가지가 있습니다. C++의 특정 함수에 대한 매크로 정의
(3) sequential operations in common types
int a = 5, b = 15, c = 20;
if(a < b < c) printf("true\n");
output: false
//doesn't matter if it's made with symbols or words
그것 뿐이다
(4) for each (not using for(auto...) C++11) and
it may different for lists, vectors, etc...
vector<int> v = {1,3,5,7};
foreach(e : v) printf("%d ", e);
output: 1 3 5 7
(2) infix operations in normal types (int, char, etc)
int a = 20, b = 10
if(b|a) printf("%d is divisor of %d\n", b, a);
// the symbol | means "divides", this is like (a % b == 0)
output: 10 is divisor of 20
(1) postfix operations in normal types (int, char, etc)
int n = 5;
printf("%d\n", n!)
output: 120
. C++에서 이러한 매크로를 만들 수 있습니까?
감사합니다.
추 신 : 기호는 필요 없습니다. | 또는! 그들이 일하기 때문에, @ 또는 $ 또는 무엇이든 될 수 있습니다. 아이디어는 접미사 (A @), 중위 (A @ 나), 연속 (C @ b @과) 및
** ** 매크로를 사용하지 마십시오. ** 이러한 스 니펫에는 인라인 기능 만 제공하면됩니다. –
이름은 식별자 여야하기 때문에 매크로를 사용할 수 없습니다 ('!'와 같은 연산자 토큰이 아님). 그리고 C++은 내장 타입에 대한 연산자 오버로딩을 허용하지 않습니다. 당신은 당신 자신의 특별한 전 처리기로 이것을 수행 할 수 있지만, 그 시점에서 당신은 실제로 C++을 쓰고 있지 않으므로 다른 언어 나 전통적인 구문을 사용할 수도 있습니다. – Cameron
어쨌든 할 수 있다면 궁금합니다 ... 구문이 표시된 것과 같으면 매크로 나 인라인은 상관 없지만 코드가 작아서 기호를 사용할 수있는 매크로를 선호합니다. 금지 된 것 외에는 문제가되지 않습니다. – Daniel