Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ GNU g++预处理器/编译器:printf值_C++_Gcc_C Preprocessor - Fatal编程技术网

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

C++ GNU g++预处理器/编译器:printf值,c++,gcc,c-preprocessor,C++,Gcc,C Preprocessor,嗨,我在寻找一个解决方案,为GCC打印一个值,这是在编译过程中计算出来的 有消息杂注,但它们只能打印用户输入字符串。我要找的是printf风格的输出,在那里我可以输入参数 范例 示例2:搜索此问题的解决方案 嗨,我在寻找一个解决方案,为GCC打印一个值,这是在编译过程中计算出来的 你不能用标准来做这件事 您可以考虑编写自己的提供程序,例如,一些附加的PrabMA或GCC建造者来做您想做的事情。 然而,开发这样一个插件可能需要几周的时间。您需要了解GCC内部,才能编写该插件。所以看看中间 使用C+

嗨,我在寻找一个解决方案,为GCC打印一个值,这是在编译过程中计算出来的

有消息杂注,但它们只能打印用户输入字符串。我要找的是printf风格的输出,在那里我可以输入参数

范例

示例2:搜索此问题的解决方案

嗨,我在寻找一个解决方案,为GCC打印一个值,这是在编译过程中计算出来的

你不能用标准来做这件事

您可以考虑编写自己的提供程序,例如,一些附加的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();
}