小编har*_*ari的帖子

在不同的.c文件中使用函数(c编程101)

/me/home/file1.c containes function definition:

int mine(int i)
{
    /* some stupidity by me */
}
Run Code Online (Sandbox Code Playgroud)

我已经宣布了这个功能

/me/home/file1.h

int mine(int);
Run Code Online (Sandbox Code Playgroud)

如果我想使用此功能mine()/me/home/at/file2.c

为此,我需要做的就是:

file2.c

#include "../file1.h"
Run Code Online (Sandbox Code Playgroud)

够了吗?可能不是.

做完这么多,当我编译时file2.c,我得到了undefined reference to 'mine'

c declaration function header-files

5
推荐指数
1
解决办法
543
查看次数

在C中获取当前时间/日期/日的最有效方法

用C语言获取当前时间/日期/日/年的最有效方法是什么?由于我必须多次执行,我需要一种真正有效的方法.我在freeBSD上.

提前致谢.

c freebsd systemtime processing-efficiency

4
推荐指数
2
解决办法
8496
查看次数

如何解析syslog时间戳

http://www.syslog.cc/ietf/drafts/draft-ietf-syslog-protocol-23.txt

6.2.3.1.实施例在上面的链接提供了不同的时间戳甲酸盐的实例.

我该如何解析这些时间戳C

在运行中,任何类型的消息都可以到达,我希望能够解析它.

c unix timestamp syslog

4
推荐指数
1
解决办法
3125
查看次数

功能宏问题

编程实践书说:

函数宏最严重的问题之一是在定义中出现多次的参数可能会被多次评估; 如果调用中的参数包含带副作用的表达式,则结果是一个微妙的错误.此代码尝试从以下位置实现一个字符测试:

#define isupper(c) ((c) >= 'A' && (c) <= 'Z')
Run Code Online (Sandbox Code Playgroud)

请注意,参数c在宏的主体中出现两次.如果我在这样的上下文中调用supper,

while (isupper(c = getchar()))
Run Code Online (Sandbox Code Playgroud)

然后,每当输入字符大于或等于A时,它将被丢弃并且另一个字符读取以针对Z进行测试.

我不明白如何可以丢弃更大的> = A的字符.

c function c-preprocessor

4
推荐指数
1
解决办法
174
查看次数

杀 - 它会立即杀死这个过程吗?

到底kill是做什么的?

我有一个父进程,它一个接一个地创建100(作为示例)子进程.在任何孩子的工作结束时,我杀了孩子,kill(pid_of_child, SIGKILL)我在ps输出中看不到.但是如果父进程出现问题并且我从父进程退出exit(1)(此时只有1个子进程- 我可以检查它ps),那时我看到很多<defunct>进程ppidpid父进程的.

怎么可能?没有kill彻底杀死孩子的过程?

c freebsd kill process defunct

4
推荐指数
2
解决办法
889
查看次数

子进程可以在没有父进程死亡的情况下<defunct>吗?

杀 - 它会立即杀死这个过程吗?

我找到了答案,SIGCHLDwait为该处理程序设置了一个信号处理程序.这样,每当父进程执行kill子进程时,就会调用此处理程序并调用它wait获取子进程. - 动机是清除进程表条目.

即使没有父进程死亡,我仍然会看到一些子进程持续几秒钟.- 这怎么可能?

我看到了这个ps.准确地ps -o user,pid,ppid,command -ax和父母的过程,子过程和失效.

c signals freebsd process defunct

4
推荐指数
2
解决办法
3875
查看次数

FreeBSD:网络接口信息

我试图在FreeBSD中编程找到网络接口信息.在linux中,接口列在/ etc/network/interfaces文件中.

FreeBSD中有这样的文件吗?我该如何提取该信息?

c networking freebsd interface

4
推荐指数
1
解决办法
4389
查看次数

在C中使用双哈希(##)

头文件cissvar.h有这个定义:

#define CISSQ_REQUEST_QUEUE(name, index)
static __inline void                                                    
ciss_initq_ ## name (struct ciss_softc *sc)                             
{                                                                       
    STAILQ_INIT(&sc->ciss_ ## name);                                    
    CISSQ_INIT(sc, index);                                              
}             
Run Code Online (Sandbox Code Playgroud)

ciss.c中的实际用法如下所示:

ciss_initq_free(sc);
ciss_initq_notify(sc);
Run Code Online (Sandbox Code Playgroud)

如果有人可以解释这是如何工作的话会很棒.

那么,
1)name指的是"free"或"notify"
2)"index"来自哪里?3)编译器如何在.h和.c之间进行魔术绑定?

c compiler-construction macros

4
推荐指数
2
解决办法
5393
查看次数

退出 awk 函数

如何退出 awk 函数?“exit”停止整个程序?

scripting awk exit nawk

3
推荐指数
1
解决办法
1338
查看次数

这个C代码对返回代码做了什么?

函数在失败时返回TRUE,在成功时返回FALSE.

我看到一些这样的功能在这方面做到了这一点:

return return_code != 0;
Run Code Online (Sandbox Code Playgroud)

要么

return (return_code != 0);
Run Code Online (Sandbox Code Playgroud)

在这个函数中,在每个错误情况下,它返回TRUE - 这很好,以及在出错时应该做什么.

但上面的代码表示什么?它是否正在尝试确保ret​​urn_code为FALSE - 显式?

c error-handling return-value

3
推荐指数
1
解决办法
163
查看次数