C / C ++: вывод содержимого заголовочного файла (config) - PullRequest
0 голосов
/ 16 октября 2018

У меня есть config.h, сгенерированный CMake, определяющий настройки текущей сборки, например:

#ifndef CONFIG_H__
#define CONFIG_H__

#define CMAKE_BUILD_TYPE "Debug"
#define MY_GITHASH "@123456@"
#define MY_COMPILATION_DATE "2018-10-16"
#define MY_VERSION_MAJOR 1
#define MY_VERSION_MINOR 0

#endif /* CONFIG_H__ */

Как я могу поместить это в двоичный файл, чтобы его можно было распечатать по требованию?Я знаю, что могу объединить все определения в новое определение и распечатать это.Я ищу более простое решение, которое просто печатает весь заголовочный файл - в идеале, без указания местоположения config.h заголовочного файла.

1 Ответ

0 голосов
/ 16 октября 2018
  1. Не идеально (config.h должно быть в известном для gas месте)
  2. только GCC

test.c:

extern const char config_h_begin;
extern const char config_h_end;

asm ("\t.section .rodata\n"
    "config_h_begin: \n"
    "\t .incbin \"config.h\"\n"
    "config_h_end:\n"
);

const char *begin = &config_h_begin;
const char *end = &config_h_end;
$objdump -s test.o
test.o:     file format elf64-x86-64

Contents of section .rodata:

0000 2369666e 64656620 5f5f434f 4e464947  #ifndef __CONFIG
0010 5f485f5f 0a236465 66696e65 205f5f43  _H__.#define __C
0020 4f4e4649 475f485f 5f0a0a23 636d616b  ONFIG_H__..#cmak
0030 65646566 696e6520 434d414b 455f4255  edefine CMAKE_BU
0040 494c445f 54595045 20224465 62756722  ILD_TYPE "Debug"
0050 0a236465 66696e65 204d595f 47495448  .#define MY_GITH
0060 41534820 22403132 33343536 40220a23  ASH "@123456@".#
0070 64656669 6e65204d 595f434f 4d50494c  define MY_COMPIL
0080 4154494f 4e5f4441 54452022 32303138  ATION_DATE "2018
0090 2d31302d 3136220a 23646566 696e6520  -10-16".#define 
00a0 4d595f56 45525349 4f4e5f4d 414a4f52  MY_VERSION_MAJOR
00b0 20310a23 64656669 6e65204d 595f5645   1.#define MY_VE
00c0 5253494f 4e5f4d49 4e4f5220 300a0a23  RSION_MINOR 0..#
00d0 656e6469 66202f2a 205f5f43 4f4e4649  endif /* __CONFI
00e0 475f485f 5f202a2f 0a0a               G_H__ */..      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...