С gnu89:Как реализовать и поделиться встроенной функцией с помощью C99?
/* share.h */
extern inline void f (void);
/* function.c */
void f (void) {}
/* main.c */
#include "share.h"
int main (int argc, char **argv) {
f();
return 0;
}
С C99:
/* share.h */
static inline void f (void) {}
/* main.c */
#include "share.h"
int main (int argc, char **argv) {
f();
return 0;
}
Как реализовать одно определение f()
в function.c
как в gnu89, но с использованием режима C99?
Извините, если я не был чист, я хочу, чтобы определение функции находилось в исходном файле, чтобы сохранить логику только в одном файле, независимо от того, должны ли они быть встроены или нет. – lxndr
Я не думаю, что это возможно. Чтобы сделать вложение возможным, единица перевода должна знать определение функции, поэтому она должна быть в файле заголовка. Возможно, вы могли бы сделать это, используя какое-то странное условное включение, я постараюсь добавить это к моему ответу. – schot
Ну, может быть более читаемым, чтобы написать определение непосредственно в заголовочном файле. Означает ли это, что extern inline не имеет смысла в C99? – lxndr