<QtCompilerDetection> - Compiler-specific Macro Definitions
<QtCompilerDetection> 헤더 파일에는 다양한 컴파일러 관련 매크로가 포함되어 있습니다. 더 보기...
Header: | #include <QtCompilerDetection> |
Macros
(since 6.7) | |
Q_CC_BOR | |
Q_CC_CDS | |
Q_CC_CLANG | |
Q_CC_COMEAU | |
Q_CC_DEC | |
Q_CC_EDG | |
Q_CC_GHS | |
Q_CC_GNU | |
Q_CC_HIGHC | |
Q_CC_HPACC | |
Q_CC_KAI | |
Q_CC_MIPS | |
Q_CC_MSVC | |
Q_CC_OC | |
Q_CC_PGI | |
Q_CC_SUN | |
Q_CC_SYM | |
Q_CC_USLC | |
Q_CC_WAT | |
(since 6.4) | Q_CONSTINIT |
Q_DECL_EXPORT | |
Q_DECL_IMPORT | |
void | Q_FALLTHROUGH |
const char* | Q_FUNC_INFO |
Q_LIKELY(expr) | |
(since 6.6) | Q_NODISCARD_CTOR |
(since 6.7) | Q_NODISCARD_CTOR_X(message) |
(since 6.7) | Q_NODISCARD_X(message) |
Q_UNLIKELY(expr) |
자세한 설명
<QtCompilerDetection> 헤더 파일은 애플리케이션이 지정된 컴파일러를 사용하여 컴파일되는 경우 정의되는 다양한 매크로(Q_CC_*)를 제공합니다. 예를 들어, Q_CC_SUN 매크로는 애플리케이션이 Forte Developer 또는 Sun Studio C++를 사용하여 컴파일되는 경우 정의됩니다.
이러한 매크로의 목적은 프로그래머가 컴파일러별 코드를 애플리케이션에 추가할 수 있도록 하는 것입니다.
매크로 문서
이 기능을 지원하는 컴파일러에서는 [[nodiscard(message)]]
으로 확장합니다.
그렇지 않으면 각각 [[nodiscard]]
및 Q_NODISCARD_CTOR 으로 확장됩니다.
이 기능은 Qt 6.7에 도입되었습니다.
Q_NODISCARD_CTOR 를참조하세요 .
Q_CC_BOR
애플리케이션이 보랜드/터보 C++를 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_CDS
애플리케이션이 Reliant C++를 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_CLANG
애플리케이션이 Clang을 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_COMEAU
애플리케이션이 컴포 C++를 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_DEC
애플리케이션이 DEC C++를 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_EDG
에디슨 디자인 그룹 C++를 사용하여 애플리케이션을 컴파일하는 경우 정의됩니다.
Q_CC_GHS
애플리케이션이 그린힐스 최적화 C++ 컴파일러를 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_GNU
애플리케이션이 GNU 컴파일러 컬렉션(GCC)을 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_HIGHC
애플리케이션이 MetaWare High C/C++를 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_HPACC
애플리케이션이 HP aC++를 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_KAI
애플리케이션이 KAI C++를 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_MIPS
애플리케이션이 MIPSpro C++를 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_MSVC
애플리케이션이 Microsoft Visual C/C++, Windows용 인텔 C++를 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_OC
애플리케이션이 CenterLine C++를 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_PGI
애플리케이션이 포틀랜드 그룹 C++를 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_SUN
애플리케이션이 Forte Developer 또는 Sun Studio C++를 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_SYM
애플리케이션이 디지털 마스 C/C++(이전에는 시만텍 C++)를 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_USLC
애플리케이션이 SCO OUDK 및 UDK를 사용하여 컴파일되는 경우 정의됩니다.
Q_CC_WAT
애플리케이션이 Watcom C++를 사용하여 컴파일되는 경우 정의됩니다.
[since 6.4]
Q_CONSTINIT
컴파일러에서 지원하는 경우 상수 초기화를 시행합니다.
컴파일러가 C++20 constinit
키워드, Clang의 [[clang::require_constant_initialization]]
또는 GCC의 __constinit
를 지원하는 경우 이 매크로는 이 중 사용 가능한 첫 번째 키워드로 확장되며, 그렇지 않으면 아무것도 확장되지 않습니다.
constinit
로 표시된 변수는 런타임에 초기화를 수행해야 하는 경우 컴파일 오류가 발생합니다.
참고: 상수로 초기화된 변수는 사소한 소멸이 아닌 경우 로드 시간에 영향을 미칠 수 있습니다.
상수의 경우 C++11부터 constexpr
을 사용할 수 있지만 constexpr
은 변수 const
도 만들지만 constinit
은 상수 초기화를 보장하지만 변수 const
는 만들지 않습니다:
키워드 | 추가 | 불변 | 상수 초기화 |
---|---|---|---|
const | C++98 | yes | 필요 없음 |
constexpr | C++11 | yes | 필수 |
constinit | C++20 | 아니요 | 필수 |
이 매크로는 Qt 6.4에 도입되었습니다.
Q_DECL_EXPORT
이 매크로는 공유 라이브러리 내보내기를 위한 심볼을 표시합니다( 공유 라이브러리 만들기 참조).
Q_DECL_IMPORT도 참조하세요 .
Q_DECL_IMPORT
이 매크로는 심볼을 공유 라이브러리에서 가져오기로 선언합니다( 공유 라이브러리 만들기 참조).
Q_DECL_EXPORT도 참조하세요 .
void Q_FALLTHROUGH
대소문자 블록 끝에 있는 switch 문에 사용하여 컴파일러와 다른 개발자에게 break 문이 없는 것이 의도적인 것임을 알릴 수 있습니다.
이 기능은 누락된 break 문이 버그인 경우가 많고, 일부 컴파일러는 찾을 수 없을 때 경고를 표시하도록 구성할 수 있으므로 유용합니다.
Q_UNREACHABLE() 및 Q_UNREACHABLE_RETURN()도 참조하세요 .
const char*Q_FUNC_INFO
매크로가 있는 함수를 설명하는 문자열로 확장됩니다. 이 문자열이 구체적으로 어떻게 보이는지는 컴파일러에 따라 다릅니다. GNU GCC에서는 일반적으로 함수 서명이지만, 다른 컴파일러에서는 줄 및 열 번호일 수 있습니다.
Q_FUNC_INFO는 qDebug()와 함께 편리하게 사용할 수 있습니다. 예를 들어, 이 함수:
template<typename TInputType>const TInputType &myMin(const TInputType &value1, const TInputType &value2){ qDebug() << Q_FUNC_INFO << "was called with value1:" << value1 << "value2:" << value2; if(value1 < value2) 반환 값1; else 반환 값2; }
를 정수형으로 인스턴스화하면 GCC 컴파일러에서 생성됩니다:
const TInputType& myMin(const TInputType&, const TInputType&) [with TInputType = int] was called with value1: 3 value2: 4
이 매크로가 함수 외부에서 사용되는 경우 동작이 정의되지 않습니다.
Q_LIKELY(expr)
컴파일러에 묶인 조건 expr 이 true
으로 평가될 가능성이 높다는 힌트를 제공합니다.
이 매크로를 사용하면 컴파일러가 코드를 최적화하는 데 도움이 될 수 있습니다.
예시:
// the condition inside the "if" will be successful most of the times for (int i = 1; i <= 365; i++) { if (Q_LIKELY(isWorkingDay(i))) { ... } ... }
Q_UNLIKELY()도 참조하세요 .
[since 6.6]
Q_NODISCARD_CTOR
생성자에서 이를 허용하는 컴파일러에서는 [[nodiscard]]
로 확장됩니다.
그렇지 않으면 아무것도 확장되지 않습니다.
호출 사이트가 결과 객체를 사용하지 않는 경우 Q_NODISCARD_CTOR로 표시된 생성자는 컴파일러 경고를 유발합니다.
이 매크로는 해당 기능을 구현하지 않는 컴파일러에서 경고를 방지하기 위한 목적으로만 존재합니다. 지원되는 플랫폼에서 모두 생성자에서 [[nodiscard]]
을 허용하는 경우 이 매크로 대신 C++ 속성을 직접 사용하는 것이 좋습니다.
이 매크로는 Qt 6.6에 도입되었습니다.
Q_NODISCARD_CTOR_X 를참조하세요 .
Q_UNLIKELY(expr)
컴파일러에게 동봉된 조건 expr 이 false
으로 평가될 가능성이 높다는 힌트를 제공합니다.
이 매크로를 사용하면 컴파일러가 코드를 최적화하는 데 도움이 될 수 있습니다.
예시:
bool readConfiguration(const QFile &file) { // 기존 파일을 읽으라는 메시지가 표시될 것으로 예상되는 경우 (Q_UNLIKELY(!file.exists())) { qWarning() << "File not found"; 반환 거짓; } ... 반환 참; }
Q_LIKELY()도 참조하세요 .
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.