<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sv">
	<id>https://wiki.linux.se/index.php?action=history&amp;feed=atom&amp;title=feature_test_macros%287%29</id>
	<title>feature test macros(7) - Versionshistorik</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linux.se/index.php?action=history&amp;feed=atom&amp;title=feature_test_macros%287%29"/>
	<link rel="alternate" type="text/html" href="https://wiki.linux.se/index.php?title=feature_test_macros(7)&amp;action=history"/>
	<updated>2026-04-24T07:56:41Z</updated>
	<subtitle>Versionshistorik för denna sida på wikin</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://wiki.linux.se/index.php?title=feature_test_macros(7)&amp;diff=6184&amp;oldid=prev</id>
		<title>Admin: Skapade sidan med &#039;= feature_test_macros(7) = &#039;&#039;&#039;Miscellaneous Information Manual&#039;&#039;&#039;  == NAMN == feature_test_macros - makron för funktionstest  == BESKRIVNING == Funktionsmakron för funktionstest låter programmerare kontrollera vilka definitioner som exponeras i systemets headerfiler vid kompilering.  &#039;&#039;&#039;OBS:&#039;&#039;&#039; För att vara effektiva måste funktionsmakron definieras innan några headerfiler inkluderas. Detta kan göras antingen genom kompilationskommandot, till exempel: ```bash cc -...&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.linux.se/index.php?title=feature_test_macros(7)&amp;diff=6184&amp;oldid=prev"/>
		<updated>2024-11-22T07:24:58Z</updated>

		<summary type="html">&lt;p&gt;Skapade sidan med &amp;#039;= feature_test_macros(7) = &amp;#039;&amp;#039;&amp;#039;Miscellaneous Information Manual&amp;#039;&amp;#039;&amp;#039;  == NAMN == feature_test_macros - makron för funktionstest  == BESKRIVNING == Funktionsmakron för funktionstest låter programmerare kontrollera vilka definitioner som exponeras i systemets headerfiler vid kompilering.  &amp;#039;&amp;#039;&amp;#039;OBS:&amp;#039;&amp;#039;&amp;#039; För att vara effektiva måste funktionsmakron definieras innan några headerfiler inkluderas. Detta kan göras antingen genom kompilationskommandot, till exempel: ```bash cc -...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= feature_test_macros(7) =&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Miscellaneous Information Manual&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== NAMN ==&lt;br /&gt;
feature_test_macros - makron för funktionstest&lt;br /&gt;
&lt;br /&gt;
== BESKRIVNING ==&lt;br /&gt;
Funktionsmakron för funktionstest låter programmerare kontrollera vilka definitioner som exponeras i systemets headerfiler vid kompilering.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;OBS:&amp;#039;&amp;#039;&amp;#039; För att vara effektiva måste funktionsmakron definieras innan några headerfiler inkluderas. Detta kan göras antingen genom kompilationskommandot, till exempel:&lt;br /&gt;
```bash&lt;br /&gt;
cc -DMACRO=value&lt;br /&gt;
```&lt;br /&gt;
eller genom att definiera makrot direkt i källkoden innan några headers inkluderas:&lt;br /&gt;
```c&lt;br /&gt;
#define _GNU_SOURCE&lt;br /&gt;
#include &amp;lt;xyz.h&amp;gt;&lt;br /&gt;
```&lt;br /&gt;
Vissa makron används för att skapa portabla applikationer genom att undvika icke-standardiserade definitioner, medan andra makron möjliggör åtkomst till specifika, icke-standardiserade funktioner.&lt;br /&gt;
&lt;br /&gt;
=== Specifikation av funktionsmakron i manualer ===&lt;br /&gt;
När en funktion kräver ett specifikt funktionsmakro beskrivs detta i manualens SYNOPSIS. Exempel från manualen för `acct(2)`:&lt;br /&gt;
```c&lt;br /&gt;
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):&lt;br /&gt;
acct(): _BSD_SOURCE || (_XOPEN_SOURCE &amp;amp;&amp;amp; _XOPEN_SOURCE &amp;lt; 500)&lt;br /&gt;
```&lt;br /&gt;
I detta fall kan funktionen nås genom att definiera:&lt;br /&gt;
```c&lt;br /&gt;
#define _BSD_SOURCE&lt;br /&gt;
#define _XOPEN_SOURCE  // Med ett värde mindre än 500&lt;br /&gt;
```&lt;br /&gt;
Alternativt kan detta specificeras i kompilationskommandot:&lt;br /&gt;
```bash&lt;br /&gt;
cc -D_BSD_SOURCE&lt;br /&gt;
cc -D_XOPEN_SOURCE=499&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
=== Funktionsmakron som stöds av glibc ===&lt;br /&gt;
Makron som används ofta i modern källkod:&lt;br /&gt;
* `_POSIX_C_SOURCE` - För POSIX-definitioner&lt;br /&gt;
* `_XOPEN_SOURCE` - För SUS-definitioner&lt;br /&gt;
* `_GNU_SOURCE` - För GNU-specifika funktioner&lt;br /&gt;
* `_DEFAULT_SOURCE` - För standarddefinitioner&lt;br /&gt;
&lt;br /&gt;
#### Exempel på makrons effekter&lt;br /&gt;
Makron som påverkar vilka definitioner som inkluderas:&lt;br /&gt;
* `_POSIX_C_SOURCE`:&lt;br /&gt;
  - 199309L: Real-tidsförlängningar&lt;br /&gt;
  - 199506L: Trådhantering&lt;br /&gt;
  - 200112L: POSIX.1-2001-standard&lt;br /&gt;
* `_XOPEN_SOURCE`:&lt;br /&gt;
  - 500: SUSv2&lt;br /&gt;
  - 600: SUSv3 och C99&lt;br /&gt;
  - 700: SUSv4 och POSIX.1-2008&lt;br /&gt;
&lt;br /&gt;
Makron som bör undvikas i ny kod:&lt;br /&gt;
* `_BSD_SOURCE` och `_SVID_SOURCE` (ersätts av `_DEFAULT_SOURCE`).&lt;br /&gt;
&lt;br /&gt;
== STANDARDER ==&lt;br /&gt;
POSIX.1 specificerar makron som `_POSIX_C_SOURCE`, `_POSIX_SOURCE`, och `_XOPEN_SOURCE`.&lt;br /&gt;
&lt;br /&gt;
== HISTORIA ==&lt;br /&gt;
Makrot `_XOPEN_SOURCE_EXTENDED` specificerades först i XPG4v2 (SUSv1) men är inte en del av senare versioner som SUSv2.&lt;br /&gt;
&lt;br /&gt;
== EXEMPEL ==&lt;br /&gt;
Ett exempelprogram som visar hur olika funktionsmakron påverkar kompileringsmiljön:&lt;br /&gt;
```c&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
#ifdef _POSIX_SOURCE&lt;br /&gt;
    printf(&amp;quot;_POSIX_SOURCE defined\n&amp;quot;);&lt;br /&gt;
#endif&lt;br /&gt;
#ifdef _POSIX_C_SOURCE&lt;br /&gt;
    printf(&amp;quot;_POSIX_C_SOURCE defined: %jdL\n&amp;quot;, (intmax_t)_POSIX_C_SOURCE);&lt;br /&gt;
#endif&lt;br /&gt;
#ifdef _GNU_SOURCE&lt;br /&gt;
    printf(&amp;quot;_GNU_SOURCE defined\n&amp;quot;);&lt;br /&gt;
#endif&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
```&lt;br /&gt;
Exempel på användning:&lt;br /&gt;
```bash&lt;br /&gt;
cc -D_XOPEN_SOURCE=500 program.c&lt;br /&gt;
./a.out&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
== SE ÄVEN ==&lt;br /&gt;
* [[libc(7)]]&lt;br /&gt;
* [[standards(7)]]&lt;br /&gt;
* [[system_data_types(7)]]&lt;br /&gt;
&lt;br /&gt;
== COLOPHON ==&lt;br /&gt;
Denna sida är en del av man-pages-projektet (Linux kärna och C-biblioteks användardokumentation). För mer information, besök [https://www.kernel.org/doc/man-pages/](https://www.kernel.org/doc/man-pages/).&lt;br /&gt;
&lt;br /&gt;
= Sidslut =&lt;br /&gt;
&lt;br /&gt;
Orginalhemsidan på Engelska :https://man7.org/linux/man-pages/man7/feature_test_macros.7.html&lt;br /&gt;
&amp;lt;BR&amp;gt;[[PHP]]&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på &lt;br /&gt;
https://www.linux.se/kontaka-linux-se/&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;Tack till [https://pc-service.se PC Service] som har  sponsrat [https://www.linux.se Linux.se] med webbhotell.&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Standard C-biblioteket ]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>