하지 말아야 할 이유
첫째, 여기에 밑줄을 쓰거나 시뮬레이션을 위해 시뮬레이션을 사용하지 않는 이유가 있습니다. 코드에서 상수를 찾기가 더 어려워집니다. 일부 프로그램이 작동 중 어딘가에 일부 매개 변수에 대해 하드 코드 된 값 1500000을 표시한다고 가정하십시오. 프로그램의 소스 코드에서 이것이 실제로 발생하는 위치를 알고 싶습니다. 그래서 코드를 grep하고 1500000
아무것도 찾지 못했습니다. 왜? 16 진수 일 수 있습니다 (그러나 왜 둥근 십진수인지). 나에게 알지 못하는 상수는 실제로로 쓰여집니다 1_500_000
. 정규식이 필요했습니다 1_?500_?000
.
댓글의 안내 문자
한 가지 종류의 시각 보조 도구를 사용할 수 없거나 위와 같은 이유로 사용하지 않으려 고한다고해서 텍스트 파일의 두 가지 차원을 활용하여 대체 시각 보조 도구를 만들 수 없다는 의미는 아닙니다.
foo = bar / 1000000000;
// --^--^--^
이를 통해 우리는 3 개의 0으로 구성된 3 개의 그룹이 있음을 쉽게 확신 할 수 있습니다. 그러나 여전히 소스 코드를 grep하여 1000000000
찾을 수 있습니다.
구문 채색
프로그래밍 가능한 구문 색상이있는 텍스트 편집기를 사용하면 가독성을 높이기 위해 숫자를 상수로 그룹화하여 색상을 번갈아 표시 할 수 있습니다. 우리는 코드에서 아무것도 할 필요가 없습니다.
전처리 : C, C ++, 목표 C
자릿수 사이에 쉼표를 원한다면 C와 C ++에서 사전 처리를 사용할 수 있습니다.
/* Four digit base TH-ousand constant macro */
/* Condensed using Horner's rule */
#define TH(A,B,C,D) ((((((A) * 1000) + (B)) * 1000) + (C)) * 1000 + D)
tv_sec = nanoseconds / TH(1,000,000,000)
와 같은 숫자에서 작동합니다 TH(1,234,567,890)
.
TH와 유사한 매크로는 산술보다는 토큰 붙여 넣기로 작동 할 수 있습니다. C 프리 프로세서에서 2 진 ##
연산자 ( "토큰 붙여 넣기")를 매크로 본문에서 두 피연산자를 단일 토큰에 붙여 넣기 위해 사용할 수 있습니다. 피연산자 중 하나 또는 둘 다가 매크로 인수 일 수 있습니다. 여기서 단점은 (우리에게 위험을 초래할 수 있음) 결과 catenation이 유효한 토큰이 아닌 경우 동작이 정의되지 않는다는 것입니다.
#define TOK4(A, B, C, D) A ## B ## C ## D
지금
TOK4(1,000,000,000) /* produces the single token 1000000000 */
TOK4(1,123,000,000.0E+2) /* produces the single token 1123000000.0E+2 */
TOK4(pr,in,t,f) /* produces the token printf */
TOK4(#,*,a,b) /* undefined behavior, #*ab is not valid token syntax */
식별자를 붙여넣고 결과를 사용하여 전역 변수와 함수의 이름을 지정하는 C 프로그램은 존재하며 GNU id-utils 및 ctags와 같은 도구에는 영향을 미치지 않기 때문에 작업하기가 끔찍합니다.