C++ GNU g++预处理器/编译器:printf值
嗨,我在寻找一个解决方案,为GCC打印一个值,这是在编译过程中计算出来的 有消息杂注,但它们只能打印用户输入字符串。我要找的是printf风格的输出,在那里我可以输入参数 范例 示例2:搜索此问题的解决方案 嗨,我在寻找一个解决方案,为GCC打印一个值,这是在编译过程中计算出来的 你不能用标准来做这件事C++ GNU g++预处理器/编译器:printf值,c++,gcc,c-preprocessor,C++,Gcc,C Preprocessor,嗨,我在寻找一个解决方案,为GCC打印一个值,这是在编译过程中计算出来的 有消息杂注,但它们只能打印用户输入字符串。我要找的是printf风格的输出,在那里我可以输入参数 范例 示例2:搜索此问题的解决方案 嗨,我在寻找一个解决方案,为GCC打印一个值,这是在编译过程中计算出来的 你不能用标准来做这件事 您可以考虑编写自己的提供程序,例如,一些附加的PrabMA或GCC建造者来做您想做的事情。 然而,开发这样一个插件可能需要几周的时间。您需要了解GCC内部,才能编写该插件。所以看看中间 使用C+
您可以考虑编写自己的提供程序,例如,一些附加的PrabMA或GCC建造者来做您想做的事情。 然而,开发这样一个插件可能需要几周的时间。您需要了解GCC内部,才能编写该插件。所以看看中间
使用C++11或更高版本,您可能需要静态_assertsizeofobj==512,这是obj的错误大小,可以进行预处理,但不会将sizeofobj显示为整数 嗨,我在寻找一个解决方案,为GCC打印一个值,这是在编译过程中计算出来的 你不能用标准来做这件事您可以考虑编写自己的提供程序,例如,一些附加的PrabMA或GCC建造者来做您想做的事情。 然而,开发这样一个插件可能需要几周的时间。您需要了解GCC内部,才能编写该插件。所以看看中间
使用C++ 11或更高版本,您可能会STATICEAsReTrsisiOfObj= 512,Objor的大小不好,它会进行预处理,但不会显示sisiOfObjt作为整数。< / P>代码显示为C++,所以我删除了C语言标记。我建议您看这个答案:C++中,可以用语言构造而不是预处理来实现,代码显示为C++,所以我删除了C语言标签。我建议你看看这个答案:在C++中,你可以用C++语言11中的语言构造而不是预处理。注意,在C++17之前,还必须提供一条消息,即static_assertsizeofobj==512,意外的obj大小。但这并不能解决OP的问题,因为所说的消息必须是字符串文字。是的,我使用静态断言cpp14。但在出现故障时打印的消息,无论是pragmas还是断言字符串,都不能将带有int参数的字符串格式化为简单的printf。因此,应该告诉我,像静态断言失败之类的东西,Obji不是512,它的真正的496或是什么。你可以考虑用自己的插件扩展GCC。StasyAsAsDT也存在于C++ 11中。注意,在C++17之前,还必须提供一条消息,即static_assertsizeofobj==512,意外的obj大小。但这并不能解决OP的问题,因为所说的消息必须是字符串文字。是的,我使用静态断言cpp14。但在出现故障时打印的消息,无论是pragmas还是断言字符串,都不能将带有int参数的字符串格式化为简单的printf。所以应该有可能,告诉我一些静态断言失败,OBJ不是512,它实际上只是496或某事。你可以考虑用你自己的插件扩展GCC。
printf("hi %s, my value is %d\n", "john", 15);
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();
}