В одном из своих велосипедов я хочу использовать чужой файл, в котором сказано
You are permitted to copy and distribute this program as much as you want, as long as you leave the source code, including this comments section, intact and unmodified.
Т.к. оно у меня болтается на всяких сосфоржах и гуглокодах, нарушать лицензию не хочу.
Оригинальный файл — самостоятельная утилита. Я же хочу выкинуть из нее функции usage и main и использовать у себя.
Сделал файл-обертку am.c, в который поместил:
#define main nooperation
#include "airmass.c"
#undef main
// и дальше - замена main, которая вызывается из моего велосипеда
При этом получаю, что (gcc -Werror am.c -c) отрабатывает без проблем, но make выдает кучу ошибок:
В функции <<nooperation>>:
ошибка: <<M_PI>> undeclared (first use in this function)
ошибка: <<it>> is static but declared in inline function <<trapzd>> which is not static [-Werror]
…
Как мне включить целиком этот чужой файл в свой, чтобы выбросить ненужные функции и вставить свое?
============================================================
Решение подсказали io и Q3164. Несмотря на некоторые костыли (с проблемой с M_PI я так и не разобрался) вот так работает:
#define __USE_XOPEN
#include <math.h>
static int main(int argc, char *argv[]) __attribute((unused));
static void usage(void) __attribute((unused));
#define inline
#include "airmass.c"
#undef inline
void airmass(
…
Компилировать не с -std=c99, а std=gnu99.