33 lines
1.4 KiB
C
33 lines
1.4 KiB
C
#include <stdio.h>
|
||
#include <math.h>
|
||
#define PR(X, ...) printf("Message " #X ": " __VA_ARGS__)
|
||
#define DEBUGPRINT fprintf (stderr, "debug in %d line func: %s\n", __LINE__, __func__)
|
||
|
||
int main(void)
|
||
{
|
||
DEBUGPRINT;
|
||
printf("File: %s\n", __FILE__);
|
||
#line 100 "help.c"
|
||
DEBUGPRINT;
|
||
#line 200
|
||
DEBUGPRINT;
|
||
|
||
printf("File: %s\n", __FILE__);
|
||
#ifndef __APPLE__
|
||
//~ #error This code work only in MacOs
|
||
#endif
|
||
/*
|
||
* Единственное применение, которое я могу придумать, — это приведение номеров строк в порядок
|
||
* после длинной серии многострочных макросов.
|
||
*
|
||
В основном он используется для предоставления имен файлов и номеров строк исходного файла,
|
||
из которого был создан файл C (будь то заголовок или реализация).
|
||
Учитывая это, компилятор выдаст диагностику, которая намекает на исходный файл, а не на сгенерированный файл.
|
||
|
||
Препроцессоры также используют это для указания на включенные заголовки в предварительно обработанном файле,
|
||
в котором они расширены.
|
||
*/
|
||
|
||
return 0;
|
||
}
|