Jon*_*Mee 7 c c++ formatting printf char
在cplusplus.com参考printf我看到了一个"长度"格式的规范,但它包括注释:
黄色行表示C99引入的说明符和子说明符.请参阅
<cinttypes>扩展类型的说明符.
我的问题是关于hh长度格式.这是一个"黄色"排.格式化与hhVisual Studio中的预期行为,但我想知道是否因为Visual Studio也是C编译器或因为hhC++实际支持?
C++标准使用C90作为规范参考,直到C++ 11,因此只有C++ 11支持C99功能.虽然编译器可以自由地在C++ 11之外支持它们作为扩展.我怀疑这只适用于最新版本的Visual Studio,因为他们相对较近的驱动器支持C99和cremno表明它自2015年以来一直受支持.
如果我们转到C++ 11草案标准部分1.2规范性引用[intro.refs],它会说:
以下参考文件对于本文件的应用是必不可少的.凡是注日期的引用文件,仅引用的版本适用.凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本标准.
包括:
- ISO/IEC 9899:1999,编程语言 - C.
并且还说:
ISO/IEC 9899:1999的第7条和ISO/IEC 9899:1999/Cor.1:2001的第7条以及ISO/IEC 9899:1999/Cor.2:2003的第7条中描述的库在下文中称为C标准库.1
在C++ 11之前,这是:
- ISO/IEC 9899:1990,编程语言 - C.
如果我们在gcc中尝试使用它的示例-std=c++03 -pedantic警告:
警告:ISO C++ 98不支持'hh'gnu_printf长度修饰符[-Wformat =]