- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
将参数传递给 perror()
是否很常见,或者它通常用于非常通用的消息。例如,类似:
char buffer[50];
sprintf(buffer, "The file %s could not be opened", filename);
perror(buffer);
我问的原因是因为 perror
的单个参数似乎必须是字符串文字(没有任何格式说明符),因此也许它不鼓励使用任何变量?
或者,是否有一种简短的方法可以执行以下操作:
perror("The file %s could not be opened", filename);
(也许是一个宏?)
最佳答案
perror
声明为:
void perror(const char *s);
来自手册页:
First (if s is not NULL and *s is not a null byte ('\0')), the argument string s is printed, followed by a colon and a blank. Then an error message corresponding to the current value of errno and a new-line.
由此,我们可以假设 perror
基本上定义为:
fprintf(stderr, "%s: %s\n", s, strerror(errno));
作为宏,它可以实现为:
#define MY_PERROR(FMT,...) \
fprintf(stderr, FMT ": %s\n", ##__VA_ARGS__, strerror(errno))
根据您的示例,用法为:
MY_PERROR("The file %s could not be opened", filename);
输出如下:
无法打开文件<文件名>:<strerror的结果>
关于c - 将 perror 与参数一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66202939/
什么时候应该使用 perror,什么时候不应该?我看example我认为这个例子可能会更好,例如没有关于本地化,我可以传递给 perror 的东西,或者如果我实现命令行解释器或其他一些 C 程序之类的
我们应该使用 perror内部信号处理程序,因为它们有一个用户空间缓冲区,如 printf和其他 stdio 功能? 最佳答案 perror未在异步信号安全函数表中列出(例如, section 2.4
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
在我的上一个应用程序中,我有很多错误检查行,例如: if (something != 0) { perror("something error"); exit(-1); } 我的问题是
我以前从未见过: 上面的左下角是什么?该程序的最新版本是 #include #include int main(int argc, char **argv) { int ch; cha
据我所知,我处理流错误的两个选项是 perror 和流异常。这两种选择都是不可取的。原因如下: 错误 std::strerror 返回实现定义的消息。此消息并不总是对所有系统有用 std::strer
我知道 errno 是线程安全的。而在Linux中,还有另外2个类似的函数,分别是strerror和strerror_r。根据 Robert Lover 的书 Linux System Program
将参数传递给 perror() 是否很常见,或者它通常用于非常通用的消息。例如,类似: char buffer[50]; sprintf(buffer, "The file %s could not
将参数传递给 perror() 是否很常见,或者它通常用于非常通用的消息。例如,类似: char buffer[50]; sprintf(buffer, "The file %s could not
我知道这很简单,但我做不到。 我使用的操作系统是 Ubuntu。以下代码已经写在mysql源代码中(在sql_parse.cc文件中)。我需要检查 perror 错误消息。我怎样才能得到这些消息?我认
如何向 perror 堆栈添加错误? 这是我想要的例子 #include #include int Div (int a, int b, int * c) { if (b == 0) {
代码 printf("Doing functionname... "); if (functionname(args) == -1) { perror("functionname"); } e
我正在用 C 测试 perror 函数,并根据 this page它在传递空指针时打印一条默认消息: int main(void) { int *p; perror(p); //cra
当我的函数在运行时第 5 次或第 6 次被调用时。我开始从 perror(); 收到“内存不足”错误 如何调试/排除问题所在?在哪里可以查看我的程序在运行时的总内存使用量或运行时允许的最大内存使用量?
使用perror,我必须格式化错误信息。 prog: Error: Detailed error message 其中prog实际上是可执行文件的名称(argv[0]),如果可执行文件的名称被更改而没
内核中的 perror() 是什么?我无法从错误值中判断错误代码是什么,即 -22。 最佳答案 Linux 内核只是使用否定的 errno 代码作为约定。所以查看 asm-generic/errno-
发生错误后,我自然会调用 perror()。但是当我这样做或 printf("error: %s\n", strerror(errno)); 我不知道发生了什么。 int fd; if((fd
我用c语言写了一段tcp连接的代码,有的地方加了两个错误: perror("FAIL1: ..."); perror("FAIL2: ..."); 输出是:失败 1:..:成功 失败 2:..:参数无
我想用 perror 打印一个变量,即我想写类似 perror("error with something %s", my_var) 这可能吗?我该怎么做? 最佳答案 改用fprintf() fpri
我想打印一个带有变量的错误字符串。 printf("Hi, %s", name); perror-something("Error no: %d", number); 如何向 perror 添加变量?
我是一名优秀的程序员,十分优秀!