는 동등한 다음과 같습니다 소스#define xxx는 소스에, -D xxx는 컴파일러에 정의합니까?
#define xxx
및
gcc -D xxx
첫 번째는 소스 파일에 적용됩니까가 표시되지 않는 경우는 다른 소스 파일에 표시하지 곳 xxx는 다른 파일에 정의되어 있지 않으므로?
두 번째 것은 xxx가 모든 소스 코드 파일에서 정의된다는 것을 의미합니까?
감사합니다.
는 동등한 다음과 같습니다 소스#define xxx는 소스에, -D xxx는 컴파일러에 정의합니까?
#define xxx
및
gcc -D xxx
첫 번째는 소스 파일에 적용됩니까가 표시되지 않는 경우는 다른 소스 파일에 표시하지 곳 xxx는 다른 파일에 정의되어 있지 않으므로?
두 번째 것은 xxx가 모든 소스 코드 파일에서 정의된다는 것을 의미합니까?
감사합니다.
는 처음에만 나타나는 및 소스 파일에 적용됩니까 하지 그 xxx는 그 다른 파일에 정의되어 있지 그래서이 표시되지 않는 다른 소스 파일에서?
오른쪽.
두 번째 것은 xxx가 모든 소스 코드 파일에 정의된다는 것을 의미합니까?
예
두 방법은 같은 일을하지만 해상력의 범위는 두 경우 모두 다르다.
-D 옵션은 여기에서 소스 파일을 수정할 필요가 없으므로 makefile에서 널리 사용됩니다. 그러나 그 defination이 모든 파일에 특정적일 경우 적절한 파일에 정의하는 것이 좋습니다.
첫 번째 파일은 정의 된 소스 파일에만 적용되지만 여러 파일에 포함될 수있는 헤더 파일에 배치하여 정의를 더 많은 파일에 적용 할 수 있습니다. 두 번째 정의는 -D xxx로 컴파일 된 모든 파일에서 활성화됩니다.
나는 컴파일러 옵션이 컴파일하는 동안 기능을 비활성화하거나 활성화하여 파일을 편집 할 필요가 없기 때문에 도움이된다고 생각합니다.
예, 모든 점에있어. 헤더 파일에서 #define을하면 헤더 파일을 포함하는 모든 파일에 직접 또는 간접적으로 적용됩니다. 이것은 상수 또는 매크로를 정의하는 데 사용됩니다.