Skip to content

emka.web.id

menulis pengetahuan – merekam peradaban

Menu
  • Home
  • Tutorial
  • Search
Menu

Frequently Used Macros on Glib

Posted on April 8, 2012

glib defines a number of familiar macros used in many C programs, shown in Figure
2-1. All of these should be self-explanatory. MIN()/MAX() return the smaller or larger of their arguments. ABS() returns the absolute value of its argument. CLAMP(x, low, high) means x, unless x is outside the range [low, high]; if x is below the range, low is returned; if x is above the range, high is returned. In addition to the macros shown in Figure 2-1, TRUE/FALSE/NULL are defined as the usual 1/0/((void*)0).
[code lang=”cpp”]
#include <glib.h>

MAX( a , b ); MIN( a , b ); ABS( x );
CLAMP( x , low , high );
[/code]
Figure 2-1. Familiar C Macros

There are also many macros unique to glib, such as the portable gpointer-to-gint and gpointer-to-guint conversions shown in Figure 2-2.

Most of glib’s data structures are designed to store a gpointer. If you want to store pointers to dynamically allocated objects, this is the right thing. However, sometimes you want to store a simple list of integers without having to dynamically allocate them. Though the C standard does not strictly guarantee it, it is possible to store a gint or guint in a gpointer variable on the wide range of platforms glib has been ported to; in some cases, an intermediate cast is required. The macros in Figure 2-2 abstract the presence of the cast.

Here’s an example:
[code lang=”cpp”]
gint my_int;
gpointer my_pointer;

my_int = 5;
my_pointer = GINT_TO_POINTER(my_int);
printf("We are storing %d\n", GPOINTER_TO_INT(my_pointer));
[/code]

Be careful, though; these macros allow you to store an integer in a pointer, but storing a pointer in an integer will not work. To do that portably, you must store the pointer in a long. (It’s undoubtedly a bad idea to do so, however.)
[code lang=”cpp”]
#include <glib.h>

GINT_TO_POINTER(p); GPOINTER_TO_INT(p); GUINT_TO_POINTER(p); GPOINTER_TO_UINT(p);
[/code]

Figure 2-2. Macros for storing integers in pointers

Source: GTK Gnome Application Development

Terbaru

  • Ini Arti Kode Error FP26EV dan FP27EV di Aplikasi BriMO Serta Cara Mengatasinya!
  • Cara Jadi Clipper Modal Ngedit Video di TryBuzzer, Cocok Banget Buat Pemula!
  • Cara Pakai Beb6 Wifi Password Untuk Cek Jaringan di Sekitar Kalian
  • Inilah Review Lengkap Apakah Turbo VPN Extension Aman
  • Apa itu Toko Biru? Ini Istilah Olshop yang Perlu Kamu Tahu
  • Adswerve Inc Penipu? Ini Fakta di Balik Konsultan Digital Terkemuka Dunia!
  • Sering Ditelepon 08111? Simak Apakah Ini Penipuan atau Marketing Resmi Telkomsel
  • Inilah Cara Daftar dan Login Subsidi Tepat LPG 3 kg di Merchant Apps MyPertamina!
  • Akademi Crypto Penipu?
  • Belum Tahu Arti Paket Sedang Transit di TikTok Shop? Ternyata Ini Maksudnya Biar Kalian Nggak Panik!
  • Akun Paylater Tiba-tiba Diblokir? Jangan Panik, Gini Cara Mengatasinya Biar Lancar Jaya!
  • HP Vivo Sering Mati Sendiri Padahal Baterai Masih Banyak? Ini Penyebab dan Solusinya!
  • Inilah Cara Mengatasi BNI Mobile Banking Transaksi Tidak Dapat Dilanjutkan dan Penjelasan Kode Errornya!
  • Inilah Daftar Lengkap Tempat OVO PayLater Bisa Digunakan
  • Gini Caranya Biar Nggak Mati Topik Pas Lagi Main RP Role Play
  • Gini Caranya Atasi Kontak yang Sudah Dihapus Tapi Masih Ada di WA, Dijamin Ampuh!
  • Cara Mengatasi DJP Online Error 403 atau 405 dengan Mudah
  • Sering Lihat Kata Puqi di TikTok? Jangan Asal Tulis, Ternyata Ini Artinya!
  • Apa Itu HP Refurbished?
  • Cara Backup WhatsappGB Tanpa Hilangkan Chat
  • Belum Tahu? Ini Trik Dapat Battle Emote Ejen Ali Mobile Legends Gratis Permanen!
  • Kelebihan dan Kekurangan Paypal Indonesia 2026
  • Inilah Fungsi Web Browser Terbaru yang Bikin Internetan Kalian Jauh Lebih Aman!
  • Ini Cara Pinjaman Online Bank Mandiri Langsung Cair via Livin Tanpa Ribet
  • Gagal Tukar Pengguna Dapodik? Jangan Panik, Ini Trik Ampuh Buat Jenjang PAUD dan SD!
  • Game Terasa Berat Padahal HP Bagus? Ini Trik Setting WebView yang Jarang Orang Tahu!
  • Cara Simpan Video FreeReels ke Galeri Tanpa Watermark, Dijamin Aman dan Resmi!
  • Capek Mancing Terus? Coba Trik AFK Fish It Roblox 2026 Ini, 100% Gratis Tanpa Langganan!
  • Profil Andy Dahananto, Pilot Pesawat ATR Indonesia Air Yang Jatuh di Maros, Sulawesi Selatan
  • Update Pencarian Pesawat IAT: Suara Ledakan di Maros Bikin Geger, Ini Fakta Terbarunya!
  • Grain DataLoader Python Library Explained for Beginners
  • Controlling Ansible with AI: The New MCP Server Explained for Beginners
  • Is Your Headset Safe? The Scary Truth Bluetooth Vulnerability WhisperPair
  • Dockhand Explained, Manage Docker Containers for Beginners
  • Claude Co-Work Explained: How AI Can Control Your Computer to Finish Tasks
  • Begini Teknik KV Caching dan Hemat Memori GPU saat Menjalankan LLM
  • Apa itu State Space Models (SSM) dalam AI?
  • Begini Cara Mencegah Output Agen AI Melenceng Menggunakan Task Guardrails di CrewAI
  • Tutorial AI Lengkap Strategi Indexing RAG
  • Cara Membuat AI Voice Agent Cerdas untuk Layanan Pelanggan Menggunakan Vapi
  • Apa itu Skandal BlackCat Ransomware?
  • Apa itu ToneShell? Backdoor atau Malware Biasa?
  • Apa itu Parrot OS 7? Ini Review dan Update Terbesarnya
  • Clipper Malware? Ini Pengertian dan Bahaya yang Mengintai Kalian
  • Kronologi Serangan Gentlemen Ransomware di Oltenia Energy
Beli Pemotong Rumput dengan Baterai IRONHOOF 588V Mesin Potong Rumput 88V disini https://s.shopee.co.id/70DBGTHtuJ
Beli Morning Star Kursi Gaming/Kantor disini: https://s.shopee.co.id/805iTUOPRV

©2026 emka.web.id | Design: Newspaperly WordPress Theme