这个C语法有什么用- 使用'K&R'样式函数声明?
int func (p, p2)
void* p;
int p2;
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我能够在Visual Studios 2010beta中写这个
// yes, the arguments are flipped
void f()
{
void* v = 0;
func(5, v);
}
Run Code Online (Sandbox Code Playgroud)
我不明白.这种语法有什么意义?我可以写:
int func (p, p2)
int p2;
{
return 0;
}
// and write
int func (p, p2)
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它似乎唯一指定的是它使用了多少参数和返回类型.我猜没有类型的参数有点酷,但为什么允许它和int paranName函数声明后?有点奇怪.
这还是标准的C吗?
c function kernighan-and-ritchie function-declaration function-definition
我想将年,月,日等数字中给出的UTC日期和时间转换为time_t.有些系统提供类似mkgmtime或timegm用于此目的的功能,但这不是标准的,在我的Solaris系统上不存在.
到目前为止我找到的唯一解决方案是使用setenv将本地时区设置为UTC,然后调用mktime.但是,这种方法不是线程安全的,慢的,不可移植的,甚至会在我的系统上产生内存泄漏.
我也看到了尝试使用gmtime然后将其添加到结果的方法来确定当前UTC偏移的方法mktime.但据我所知,所有这些方法都有差距.毕竟,从本地时间到UTC的转换并不是唯一的.
您认为什么是最佳解决方案?
这是代码:
A_output(message)
struct msg message;
{
}
Run Code Online (Sandbox Code Playgroud)
我以前从未见过这样的语法。该结构定义在做什么?这只是在参数字段中指定“消息”的“类型”的另一种方式吗?那么,它是一样的吗?:
A_output(struct msg message)
{
}
Run Code Online (Sandbox Code Playgroud) 我的作业代码中有这个奇怪的函数定义,我真的不知道它应该是什么意思.
char *
sh_single_quote (string)
char *string;
{...}
Run Code Online (Sandbox Code Playgroud)
特别是"char*string;" 一行,最后用分号.
在阅读一些FreeBSD源代码时(参见:radix.h第158-173行),我在定义中找到了"函数标题"之后的变量声明.
这在ISO C(C99)中有效吗?什么时候应该在生产代码中完成而不是仅仅在"函数标题"中声明变量?为什么要在这里完成?
我指的是标题字符串的函数,如下所示: int someFunction(int i, int b) {
我想提取注释,并想知道它们是哪些函数.我有很多这样的C文件如下:
输入:
void main()
{
//sdgs
call A;
/*
sdfgs
dfhdfh
*/
call b;
some code;
}
/* this function adds
something */
int add()
{
//sgsd
some code;
//more comments
some code;
}
Run Code Online (Sandbox Code Playgroud)
输出应该是:
void main()
{
//sdgs
/*
sdfgs
dfhdfh
*/
}
/* this function adds
something */
int add()
{
//sgsd
//more comments
}
Run Code Online (Sandbox Code Playgroud)
输入代码格式整齐,"功能代码" {在下一行后开始.基本上,我只需要知道哪个"评论"来自哪个函数.此外,它还应包括功能名称或其他地方的任何其他注释.注意:这是不同的,因为顶层的函数名称应该在那里.
为了简化我的要求:
(在第一行上的块,其中一行仅包含{一到三行后的第一列,并打印上面的行.一个非常简单的程序.我只是想把'A'变成'a',但输出给我'A'.
#include <stdio.h>
int main(void) {
putchar(lower('A'));
}
lower(a)
int a;
{
if ((a >= 65) && (a >= 90))
a = a + 32;
return a;
}
Run Code Online (Sandbox Code Playgroud)