我有以下程序将绿色文本打印到终端:
#include <iostream>
#include <string>
//returns a colored string for terminal output streams
std::string colorize_forground(std::string const& message, int const& background) {
return std::string("\e[38;5;" + std::to_string(background) + "m" + message + "\x1b[0m");
}
int main() {
std::cout << colorize_forground("hello world in green", 106) << '\n';
}
但是,当我使用以下警告标志编译程序时,
g ++ -std = c ++ 1y -pedantic -o main prob.cpp
我收到此警告消息:
main.cpp: In function ‘std::string colorize_forground(const string&, const int&)’:
main.cpp:6:21: warning: non-ISO-standard escape sequence, '\e' [enabled by default]
return std::string("\e[38;5;" + std::to_string(background) + "m" + message + "\x1b[0m");
如何继续使用-pedantic,但忽略此特定功能的警告?
我一直在尝试使用gcc's Diagnostic Pragmas忽略此转义序列警告。 我按照以下方式包装了该函数,但它仍然会引发警告。
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-pedantic"
std::string colorize_forground(std::string const& message, int const& background) {
return std::string("\e[38;5;" + std::to_string(background) + "m" + message + "\x1b[0m");
}
#pragma GCC diagnostic pop
答案 0 :(得分:0)
所有可用的标志及其含义可以在以下网址看到:
https://gcc.gnu.org/onlinedocs/gcc-4.4.6/gcc/Warning-Options.html
将链接更改为您选择的gcc版本。通常,以-Wno
开头的标志将禁用将启用的警告。
如何继续使用-pedantic,但忽略此特定功能的警告?
-pedandic
标志将显示由此控制的所有错误和警告
旗。由于您关注警告,因此您可以考虑使用-pedantic-errors
,这只会产生错误,而不会产生警告。这不是完全你要求的,但可能就足够了。
此标志可能适用于您,也可能不适用于您:-Wno-pedantic-ms-format
(仅限MinGW目标)