C是否对目标文件做出任何保证?

 mobiledu2502930087 发布于 2022-12-18 18:17

我有一些我想要更改的C代码,但我想使用#ifdefs以便可以编译旧的目标文件(后预处理代码不会更改).出于某些原因(编译几个平台和认证原因),我需要保持目标文件相同(除了任何时间戳).

C语言规范或任何C编译器是否对重新编译有任何保证?我一直在做一些谷歌搜索,但我还没有找到关于这个主题的任何内容.

例如:

main.c中

int main() {
    printf("Hello World!\n");
    return 0;
}

main.h(新文件)

#ifdef DEBUG
    char some_buffer[1000];
    #define PRINTF(S) (sprintf(some_buffer, S))
#else
    #define PRINTF(S) (printf(S))
#endif

main.c(更新文件)

#include "main.h"

int main() {
    PRINTF("Hello World!\n");
    return 0;
}

如果我编译DEBUG更新main.c中没有定义的,现在包括main.h,不C语言规范或任何C编译器作任何保证该目标文件将是相同的?

1 个回答
  • C语言不保证对象文件.甚至工具链也不一定会有像目标文件那样的东西.具体的编译器可能会有一些关于他们自己的目标文件的规则,但它们可能会或可能没有特别好的文档记录.

    无论如何,如果你已经有一个你需要的特定目标文件,为什么你如此关心能够重新创建它?如果你想构建一个旧版本的软件,你不能只在你需要构建它时从版本控制中检出,而不必在同一个地方的每个版本中混淆源代码吗?

    2022-12-18 18:19 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有