[英]How to make an external text file a part of the executable?
基本上我想在我的程序中包含一个帮助例程,我有一个选择是在help
function 中使用很多printf
。 我想知道是否可以将我的指令写在一个文本文件中,以便它读取并打印出来,但在这种情况下,我必须将文件与可执行文件一起传递。 有没有办法使文件资源成为可执行文件本身的一部分?
编译器:MSVC
当然,类 C 语言的编译器将 static 字符串放在.text
部分中(根据您的目标架构/相应的汇编规范,它的命名可能不同)。 您只需将其正确格式化并将其分配给 static 字符串,然后编译器会将其放入可执行文件中。
C++ 示例:
#include <iostream>
static std::string help_text = "Hi, I'm a help text\n"
"-a do this\n"
"-b do that\n"
"...\n"
"-a do this\n"
"-b do that\n";
int main(const int argc, const char *argv[]) {
if (argc != 2) {
std::cout << "Usage: " << help_text << std::endl;
exit(0);
}
}
同样,在 header 文件中定义字符串并将 header 文件包含到主文件中以保持主文件干净。
作为对评论的回应,一个小小的 nasm x86 SystemV 示例:
mov rdi, vmsg ; move whats to be printed to the destination index register
mov rsi, args_to_printf ; e.g. when using %d or sth. to the source index register
extern printf
call printf
实际上它没有区别,它只是将文本移动到额外文件但仍将其包含到可执行文件的 static 部分的一种方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.