繁体   English   中英

如何使外部文本文件成为可执行文件的一部分?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM