相关疑难解决方法(0)

函数声明不是原型

我有一个我创建的库,

mylib.c:

#include <mylib.h>
int
testlib() {
    printf("Hello world\n");
    return (0);
}
Run Code Online (Sandbox Code Playgroud)

mylib.h:

#include <stdio.h>
extern int testlib();
Run Code Online (Sandbox Code Playgroud)

在我的程序中,我试图调用这个库函数:

myprogram.c:

#include <mylib.h>

int
main (int argc, char *argv[]) {
    testlib();
    return (0);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译该程序时,我收到以下错误:

In file included from myprogram.c:1
mylib.h:2 warning: function declaration isn't a prototype

我正在使用: gcc (GCC) 3.4.5 20051201 (Red Hat 3.4.5-2)

我的问题是,声明函数原型的正确方法是什么?

c gcc

149
推荐指数
3
解决办法
13万
查看次数

C,C99,ANSI C和GNU C有什么区别?

我已经开始编写关于codechef的编程实践,并且对C和C99之间区别感到困惑.C在这里意味着什么?是C89吗?检查此提交底部的语言.它包含C和C99.

我在互联网上发现了一个名为GNU C的东西.对于linux/unix系统有不同的C吗?这些是否符合ANSI的C标准?我也在一些地方读过"C99严格".这是什么?

是否还有其他不同的C标准?有没有叫做C 4.3.2的东西,还是当前使用的gcc版本?

编辑:

这个,这个,这有帮助.我会搜索更多并编辑未回答的内容.

我不是一个编程新手.我知道C语言是什么.我知道ANSI有不同的C标准,如C89,C99和C11.

c gcc c99 c89 ansi-c

115
推荐指数
4
解决办法
7万
查看次数

为什么gcc允许将参数传递给定义为不带参数的函数?

我不明白为什么这段代码会编译?

#include <stdio.h>
void foo() {
    printf("Hello\n");
}

int main() {
    const char *str = "bar";
    foo(str);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

gcc甚至没有发出警告,我向foo()传递了太多的参数.这是预期的行为吗?

c gcc compiler-errors

73
推荐指数
4
解决办法
4961
查看次数

int main()和int main(void)之间的区别?

以下是什么意思:

int main(void) {...} 
Run Code Online (Sandbox Code Playgroud)

VS

int main() {...}
Run Code Online (Sandbox Code Playgroud)

我认为这int main() {...}意味着main不接收任何参数(来自命令行),但是:

int main(int argc, char *argv[])
Run Code Online (Sandbox Code Playgroud)

确实.

但这int main(void) {...} 意味着什么?什么是无效主张?

我看过这里,但这是一个不同的问题.

c program-entry-point void

55
推荐指数
3
解决办法
7万
查看次数

标签 统计

c ×4

gcc ×3

ansi-c ×1

c89 ×1

c99 ×1

compiler-errors ×1

program-entry-point ×1

void ×1