「C言語/前処理指令」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎事前定義済みマクロ定数: C11をベースに加筆。
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎必須マクロ: +[https://paiza.io/projects/sbv6TqBKcvPnwKPlE7HpmA?language=c コード例]ほか
タグ: 2017年版ソースエディター
288 行
: asctime関数で生成された時間と同様に、"hh:mm:ss" 形式の文字列リテラル。
: 翻訳時刻が得られない場合は、実装で定義された有効な時刻を提供する。
 
; [https://paiza.io/projects/sbv6TqBKcvPnwKPlE7HpmA?language=c コード例]
: <syntaxhighlight lang="C">
#include <stdio.h>
int main(void){
#ifdef __DATE__
printf("__DATE__ = %s\n", __DATE__);
#else
printf("defined(__DATE__) == 0);
#endif
#ifdef __FILE__
printf("__FILE__ = %s\n", __FILE__);
#else
printf("defined(__FILE__) == 0);
#endif
#ifdef __LINE__
printf("__LINE__ = %d\n", __LINE__);
#else
printf("defined(__LINE__) == 0);
#endif
#ifdef __STDC__
printf("__STDC__ = %d\n", __STDC__);
#else
printf("defined(__STDC__) == 0);
#endif
#ifdef __STDC_HOSTED__
printf("__STDC_HOSTED__ = %d\n", __STDC_HOSTED__);
#else
printf("defined(__STDC_HOSTED__) == 0);
#endif
#ifdef __STDC_VERSION__
printf("__STDC_VERSION__ = %ld\n", __STDC_VERSION__);
#else
printf("defined(__STDC_VERSION__) == 0);
#endif
#ifdef __TIME__
printf("__TIME__ = %s\n", __TIME__);
#else
printf("defined(__TIME__) == 0);
#endif
}
</syntaxhighlight>
; 結果(paiza.io /language=c)
: <syntaxhighlight lang="text">
__DATE__ = Aug 6 2021
__FILE__ = Main.c
__LINE__ = 15
__STDC__ = 1
__STDC_HOSTED__ = 1
__STDC_VERSION__ = 201710
__TIME__ = 23:45:08
</syntaxhighlight>
; 結果(Visual Studio 2017 /std<nowiki>:</nowiki>c17 /Windows 10)
: <syntaxhighlight lang="text">
__DATE__ = Aug 7 2021
__FILE__ = C:\Users\user1\Source\Repos\macros\macros.c
__LINE__ = 14
defined(__STDC__) == 0
__STDC_HOSTED__ = 1
__STDC_VERSION__ = 201710
__TIME__ = 08:54:00
</syntaxhighlight>
; 結果(clang11/FreeBSD13)
: <syntaxhighlight lang="text">
__DATE__ = Aug 7 2021
__FILE__ = macros.c
__LINE__ = 14
__STDC__ = 1
__STDC_HOSTED__ = 1
__STDC_VERSION__ = 201710
__TIME__ = 08:59:18
</syntaxhighlight>
 
=== 環境マクロ ===