FLTK logo

[master] 8863ef7 - Avoid multiple definition of macro __fl_attr()

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.commit  ]
 
Previous Message ]Next Message ]

[master] 8863ef7 - Avoid multiple definition of macro __fl_attr() "Albrecht Schlosser" Oct 17, 2021  
 
commit 8863ef79012f6c1329db53855572b3bec045dbd4
Author:     Albrecht Schlosser <albrechts.fltk@online.de>
AuthorDate: Sun Oct 17 12:24:39 2021 +0200
Commit:     Albrecht Schlosser <albrechts.fltk@online.de>
CommitDate: Sun Oct 17 12:24:39 2021 +0200

    Avoid multiple definition of macro __fl_attr()
    
    This could happen if both FL/fl_ask.H and fluid/Fl_Type.h were
    included in the same file.

 FL/fl_ask.H     |  9 +--------
 FL/fl_attr.h    | 34 ++++++++++++++++++++++++++++++++++
 fluid/Fl_Type.h | 28 ++++++++++++----------------
 3 files changed, 47 insertions(+), 24 deletions(-)

diff --git FL/fl_ask.H FL/fl_ask.H
index 84e9ef2..964ea36 100644
--- FL/fl_ask.H
+++ FL/fl_ask.H
@@ -22,6 +22,7 @@
 #  define fl_ask_H
 
 #  include "Enumerations.H"
+#  include "fl_attr.h"
 class Fl_Widget;
 
 /** Different system beeps available.
@@ -35,14 +36,6 @@ enum Fl_Beep {
   FL_BEEP_NOTIFICATION  ///< Notification beep.
 };
 
-#  ifdef __GNUC__
-/* the GNUC-specific attribute appearing below in prototypes with a variable list of arguments
- helps detection of mismatches between format string and argument list at compilation time */
-#    define __fl_attr(x) __attribute__ (x)
-#  else
-#    define __fl_attr(x)
-#  endif // __GNUC__
-
 FL_EXPORT void fl_beep(int type = FL_BEEP_DEFAULT);
 FL_EXPORT void fl_message(const char *,...) __fl_attr((__format__ (__printf__, 1, 2)));
 FL_EXPORT void fl_alert(const char *,...) __fl_attr((__format__ (__printf__, 1, 2)));
diff --git FL/fl_attr.h FL/fl_attr.h
new file mode 100644
index 0000000..32e88a2
--- /dev/null
+++ FL/fl_attr.h
@@ -0,0 +1,34 @@
+/*
+ * Function attribute declarations for the Fast Light Tool Kit (FLTK).
+ *
+ * Copyright 1998-2021 by Bill Spitzak and others.
+ *
+ * This library is free software. Distribution and use rights are outlined in
+ * the file "COPYING" which should have been included with this file.  If this
+ * file is missing or damaged, see the license at:
+ *
+ *     https://www.fltk.org/COPYING.php
+ *
+ * Please see the following page on how to report bugs and issues:
+ *
+ *     https://www.fltk.org/bugs.php
+ */
+
+#ifndef _FL_fl_attr_h_
+#define _FL_fl_attr_h_
+
+/*
+  The GNUC-specific attribute appearing below in prototypes with a variable
+  list of arguments helps detection of mismatches between format string and
+  argument list at compilation time.
+
+  Examples: see fl_ask.H
+*/
+
+#ifdef __GNUC__
+#  define __fl_attr(x) __attribute__ (x)
+#else
+#  define __fl_attr(x)
+#endif
+
+#endif /* !_FL_fl_attr_h_ */
diff --git fluid/Fl_Type.h fluid/Fl_Type.h
index a6e0306..1810bf3 100644
--- fluid/Fl_Type.h
+++ fluid/Fl_Type.h
@@ -1,16 +1,7 @@
 //
 // Widget type header file for the Fast Light Tool Kit (FLTK).
 //
-// Each object described by Fluid is one of these objects.  They
-// are all stored in a double-linked list.
-//
-// There is also a single "factory" instance of each type of this.
-// The method "make()" is called on this factory to create a new
-// instance of this object.  It could also have a "copy()" function,
-// but it was easier to implement this by using the file read/write
-// that is needed to save the setup anyways.
-//
-// Copyright 1998-2016 by Bill Spitzak and others.
+// Copyright 1998-2021 by Bill Spitzak and others.
 //
 // This library is free software. Distribution and use rights are outlined in
 // the file "COPYING" which should have been included with this file.  If this
@@ -23,11 +14,22 @@
 //     https://www.fltk.org/bugs.php
 //
 
+// Each object described by Fluid is one of these objects.  They
+// are all stored in a double-linked list.
+//
+// There is also a single "factory" instance of each type of this.
+// The method "make()" is called on this factory to create a new
+// instance of this object.  It could also have a "copy()" function,
+// but it was easier to implement this by using the file read/write
+// that is needed to save the setup anyways.
+
 #include <FL/Fl_Widget.H>
 #include <FL/Fl_Menu.H>
 #include <FL/Fl_Plugin.H>
 #include "Fluid_Image.h"
 #include <FL/fl_draw.H>
+#include <FL/fl_attr.h>
+
 #include <stdarg.h>
 #include <stdlib.h>
 
@@ -859,12 +861,6 @@ void reveal_in_browser(Fl_Type*);
 int has_toplevel_function(const char *rtype, const char *sig);
 
 // file operations:
-#  ifdef __GNUC__
-#    define __fl_attr(x) __attribute__ (x)
-#  else
-#    define __fl_attr(x)
-#  endif // __GNUC__
-
 void write_word(const char *);
 void write_string(const char *,...) __fl_attr((__format__ (__printf__, 1, 2)));
 int write_file(const char *, int selected_only = 0);
Direct Link to Message ]
 
     
Previous Message ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.