2012-08-22 4 views
0

나는 두 관련이없는 질문이 있습니다처리기 지침 구문 및 에티켓

  1. 는 숫자가 아닌 다른 무엇인가를 정의하는 #define를 사용할 수 있습니까? (확장 된 ASCII 문자와 같은).

  2. main() 함수 내에서 전 처리기 지시문을 사용하는 것이 좋습니다. 필자가 생각한 유일한 이유는 어떤 OS가 실행되고 있는지에 따라 다른 코드를 실행하는 것입니다.

답변

0

객체와 유사한 매크로 (인수가없는 #define 매크로)는 단순히 대체됩니다. 따라서 코드에있을 수있는 모든 것이 대체 될 수 있습니다 (예 : 리터럴 문자열 #define PROGRAM_NAME "MyProgram" 또는 여러 줄 코드 블록). 여기서 후자의 쓸모없는 예제 : 두 번째 질문에 관해서는

#define INFINITE_PRINTF while (1) \ 
         { \ 
          printf("looping..."); \ 
         } 

, 그것은 당신이 언급 한 바로 일을하는 C 코드를 통해 처리기 지시문을 사용하는 것이 일반적입니다 : main에 조건부/포함 코드를 제외하고 다른 곳에서. 때로는 명확성을 위해 사용 장소 근처의 상수에 #define을 사용합니다.

0

#define strings, people #define code뿐입니다. C++의 작성자는 전처리 기의 사용에 대해 싫은 것이지만.

메인()이 OS 특정 코드에 비해 너무 높다고 생각합니다. 나는 OS 특정 코드를 감싸는 함수/클래스를 만들려고했다. OS 특정 코드를 배치 할 수있는 위치가 낮을수록 좋습니다.

+0

두 번째 사항 : 동의합니다. 그러나,'main()'함수 안에 지시어를 포함하지 않는 문제는 전역 변수를 선언해야한다는 것입니다. –

+0

@Redmastif #define이 포함 된 전역 변수 클래스를 만들려면 모든 것을 다했습니다. – Scooter