Files
OCCT/src/FoundationClasses/TKernel/Standard/Standard_WarningDisableFunctionCast.hxx
Pasukhin Dmitry 8949fd25f9 Coding - Fix clang warning suppression for function pointer casts (#1059)
- Switched from `__clang_major__ >= 16` gating to `__has_warning(...)` checks
- Added fallback suppression for `-Wcast-function-type` when `-Wcast-function-type-mismatch` is unavailable
2026-02-10 18:13:04 +00:00

40 lines
2.0 KiB
C++

// Copyright (c) 2019 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef _Standard_WarningDisableFunctionCast_HeaderFile
#define _Standard_WarningDisableFunctionCast_HeaderFile
//! @file
//! Include this file to disable GCC warning -Wcast-function-type introduced in GCC 8.1.
//!
//! This diagnostic warns when a function pointer is cast to an incompatible function pointer.
//! Existing APIs loading function pointer from library (like dlsym() or wglGetProcAddress()) have
//! no possibility to return function of specified type nor to verify that exported symbol actually
//! matches the expected function signature, so that unsafe function cast is unavoidable.
//! There is no way to prevent this warning at OCCT level (until safer APIs is introduced), thus
//! suppressing it is the only feasible way to avoid it. As this warning still can point out broken
//! places, it should be suppressed only locally, where usage of function cast has been verified.
#if defined(__clang__) && defined(__has_warning)
#if __has_warning("-Wcast-function-type-mismatch")
#pragma clang diagnostic ignored "-Wcast-function-type-mismatch"
#elif __has_warning("-Wcast-function-type")
#pragma clang diagnostic ignored "-Wcast-function-type"
#endif
#elif defined(__GNUC__) && !defined(__INTEL_COMPILER)
#if (__GNUC__ > 8) || ((__GNUC__ == 8) && (__GNUC_MINOR__ >= 1))
#pragma GCC diagnostic ignored "-Wcast-function-type"
#endif
#endif
#endif // _Standard_WarningDisableFunctionCast_HeaderFile