Если вы делаете это с помощью макросов, он будет получать слишком большой и грязный.
Вместо макросов вы можете сделать это с помощью встроенной функции. Это больше, C++ способ, но он будет работать большой в C тоже:
inline const char *macro1(const char *name, int const number, const char *date, char *buffer, size_t const buffer_size){
// copy everything into the buffer, probably with sprintf()
return buffer;
}
в случае С, я также предложить функцию, чтобы определить, как:
static inline const char *macro1(const char *name, int const number, const char *date, char *buffer, size_t buffer_size);
, но это не всегда будет скомпилирован в C++.
Update:
Как 5gon12eder упоминалось, он делает компилирует на GCC 6.2.1 и 3.8.1 звоном.
Для C++ вместо static
вы можете использовать анонимное пространство имен:
namespace{
inline const char *macro1(const char *name, int const number, const char *date, char *buffer, size_t buffer_size);
}
Наконец, если вы планируете использовать строку просто напечатать его или поместить его в файл, не сцеплять, а просто делать он в этой функции.
что "DEF"? – Nick
Это не C. Или C++. Используйте реальный код и правильную маркировку, поскольку теги - это то, как люди могут помочь найти ваш вопрос. – unwind
Что такое «Изменить:» ?? –