GNU g ++预处理器/编译器:printf值

问题描述 投票:1回答:1

您好,我正在寻找GCC的解决方案来打印在编译过程中计算出的值。

有消息指示,但它们只能打印用户输入的字符串。我正在寻找的是printf样式的输出,我可以在其中输入参数。

示例

printf("hi %s, my value is %d\n", "john", 15);

示例2:为此寻找解决方案

void dummy(MyObjectReference & obj)
{
#if(sizeof(obj) != 512)
#pragma message "cannot build, your object size is not 512, it is %d", sizeof(obj)
#error "stop build"
#endif

  obj.do_stuff();

  return obj.get_result();
}
c++ gcc c-preprocessor
1个回答
3
投票

您好,我正在寻找GCC的解决方案来打印在编译过程中计算出的值。

您无法使用标准的GCC 9来做到这一点。

[您可以考虑编写自己的GCC plugin,例如,提供一些其他#pragma(或内置的GCC)来执行您想要的操作。

但是,开发这样的插件可能需要花费您数周的时间。您需要了解GCC内部结构才能对该插件进行编码。因此,请查看GCC resource中心。

[对于C ++ 11或更高版本,您可能会use static_assert(sizeof(obj) == 512, "bad size of obj")可以进行after预处理(但不会将sizeof(obj)显示为整数)。

© www.soinside.com 2019 - 2024. All rights reserved.