all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Andy Moreton <andrewjmoreton@gmail.com>
To: emacs-devel@gnu.org
Cc: bug-gnulib@gnu.org
Subject: Re: New warnings on emacs-26 branch with gcc 8.2.0
Date: Sat, 18 Aug 2018 20:07:20 +0100	[thread overview]
Message-ID: <86o9dzjxxz.fsf@gmail.com> (raw)
In-Reply-To: 83d0uffrft.fsf@gnu.org

On Sat 18 Aug 2018, Eli Zaretskii wrote:

>> From: Bruno Haible <bruno@clisp.org>
>> Date: Sat, 18 Aug 2018 18:09:27 +0200
>> Cc: Paul Eggert <eggert@cs.ucla.edu>, Andy Moreton <andrewjmoreton@gmail.com>,
>> 	emacs-devel@gnu.org
>> 
>> So, there are 4 options:
>>   1) Use static reference to Windows API functions.
>>   2) Use '#pragma GCC diagnostic ignored "-Wcast-function-type"'
>>   3) Remove -Wcast-function-type from the compiler options.
>>   4) Live with the warning.
>> 
>> I'm opposed to 1), since it removes either features or portability.
>> 
>> I could do 2), but it does not feel like the right thing, to silence
>> a compiler warning when the user has explicitly requested a warning.
>> 
>> So, please choose among 3) and 4).
>
> There's also this additional option:
>
>   5) Cast through (void *).  Like this:
>
>       GetSystemTimePreciseAsFileTimeFunc =
>         (GetSystemTimePreciseAsFileTimeFuncType) (void (*) (void)) GetProcAddress (kernel32, "GetSystemTimePreciseAsFileTime");

This is the sensible option. GetProcAddress returns FARPROC, so there is
no way of performing this cast correctly without some sort of type
mismatch.

The additional (void (*) (void)) cast deliberately suppresses the warning
in this case, which still allowing use of the warning to catch abuse of
function pointer types in other parts of the program.

    AndyM




  reply	other threads:[~2018-08-18 19:07 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-05 16:33 New warnings on emacs-26 branch with gcc 8.2.0 Andy Moreton
2018-08-05 16:41 ` Noam Postavsky
2018-08-05 19:56 ` Paul Eggert
2018-08-05 22:23   ` Andy Moreton
2018-08-05 22:47     ` Paul Eggert
2018-08-06  8:30       ` Andy Moreton
2018-08-06 15:16         ` Eli Zaretskii
2018-08-06 15:26           ` Andy Moreton
2018-08-06 15:34             ` Eli Zaretskii
2018-08-06 18:37         ` Paul Eggert
2018-08-06 21:36           ` Andy Moreton
2018-08-06 21:58             ` Paul Eggert
2018-08-11 15:06               ` Andy Moreton
2018-08-11 19:23                 ` Paul Eggert
2018-08-11 19:38                   ` Andy Moreton
2018-08-11 20:13                     ` Paul Eggert
2018-08-06  2:26   ` Eli Zaretskii
2018-08-06  3:16     ` Paul Eggert
2018-08-11  8:40       ` Eli Zaretskii
2018-08-11 10:41         ` Andy Moreton
2018-08-11 10:51           ` Eli Zaretskii
2018-08-11 15:02             ` Andy Moreton
2018-08-11 17:15               ` Eli Zaretskii
2018-08-11 18:13                 ` Andy Moreton
2018-08-11 18:26                   ` Eli Zaretskii
2018-08-11 18:36                     ` Andy Moreton
2018-08-11 19:04                       ` Andy Moreton
2018-08-11 19:10                         ` Eli Zaretskii
2018-08-14 12:59                           ` Andy Moreton
2018-08-14 21:20                             ` Andy Moreton
2018-08-14 22:32                               ` Paul Eggert
2018-08-17 14:33                                 ` Eli Zaretskii
2018-08-18 16:09                                 ` Bruno Haible
2018-08-18 17:19                                   ` Paul Eggert
2018-08-18 18:33                                     ` Bruno Haible
2018-08-18 18:44                                     ` Eli Zaretskii
2018-08-18 18:59                                       ` Paul Eggert
2018-08-18 19:17                                         ` Eli Zaretskii
2018-08-18 19:57                                           ` Paul Eggert
2018-08-18 18:41                                   ` Eli Zaretskii
2018-08-18 19:07                                     ` Andy Moreton [this message]
2018-08-18 21:25                                     ` Bruno Haible
2018-08-19  0:17                                       ` Bruno Haible
2018-08-19  2:44                                         ` Eli Zaretskii
2018-08-19  7:08                                       ` Yuri Khan
2018-08-19  8:40                                         ` Bruno Haible
2018-08-20  3:01                                       ` Richard Stallman
2018-08-20  8:20                                         ` Andy Moreton
2018-08-21  3:37                                           ` Richard Stallman
2018-08-21  3:43                                             ` Paul Eggert
2018-08-22  4:03                                               ` Richard Stallman
2018-08-17 14:32                             ` Eli Zaretskii
2018-08-17 15:21                               ` Andy Moreton
2018-08-17 19:45                                 ` Eli Zaretskii
2018-08-17 21:33                                   ` Andy Moreton
2018-08-18  6:25                                     ` Eli Zaretskii
2018-08-11 19:18                       ` Paul Eggert
2018-08-15 15:53                         ` Andy Moreton
2018-08-16 21:05                           ` Paul Eggert
2018-08-17 14:34                           ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=86o9dzjxxz.fsf@gmail.com \
    --to=andrewjmoreton@gmail.com \
    --cc=bug-gnulib@gnu.org \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.