相关疑难解决方法(0)

警告:隐式声明函数

我的编译器(GCC)给了我警告:

警告:隐式声明函数

请帮我理解为什么会这样.

c compiler-warnings

180
推荐指数
3
解决办法
59万
查看次数

必须在C中声明函数原型吗?

我是C的新手(我之前有Java,C#和一些C++经验).在C中,是否有必要声明一个函数原型,或者代码可以在没有它的情况下编译?这样做是很好的编程习惯吗?或者它只是依赖于编译器?(我正在运行Ubuntu 9.10并在Code :: Blocks IDE下使用GNU C编译器或gcc)

c function function-prototypes

54
推荐指数
3
解决办法
8万
查看次数

C中的隐式函数声明

术语"函数的隐式声明"是什么意思.调用标准库函数而不包括相应的头文件会产生警告,如果的话

int main(){
  printf("How is this not an error?");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果不声明它是错误的话,不应该使用函数吗?请详细解释.我搜索了这个网站,发现了类似的问题,但找不到明确的答案.大多数答案说了一些关于包含头文件以摆脱警告的事情.但我想知道这不是一个错误.

c

43
推荐指数
4
解决办法
10万
查看次数

为什么C++在函数原型(签名)的前向声明方面更具限制性?

我注意到C++在使用它们之前声明函数签名比C更具限制性,即使函数定义是在实际调用函数之后声明的吗?

我一直认为C更具限制性,但似乎并非如此.

为什么在制定C++编程语言标准时改变了理念?

例如,以下代码运行时编译精细gcc命令,但在尝试编译时输出错误g++

#include<stdio.h>

int main()
{
    int a=sum(4,6);
    printf("%d",a);
    return 0;
}

int sum(int a,int b)
{
    return a+b;
}
Run Code Online (Sandbox Code Playgroud)

错误是

‘sum’ was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

c c++ gcc compiler-errors function

23
推荐指数
3
解决办法
2266
查看次数

C99是否与C89向后兼容?

我习惯了旧式C和最近才开始探索c99功能.我只有一个问题:如果我在我的程序中使用c99,c99标志gcc并将其与之前的c99库链接,我的程序是否会成功编译?

那么,我应该坚持旧的C89还是进化?

c c99

15
推荐指数
2
解决办法
4032
查看次数

功能原型的重点是什么?

我正在按照指南学习curses,以及之前原型函数中的所有C代码main(),然后定义它们.在我的C++学习中,我听说过函数原型,但从未完成它,据我所知,它对代码的编译方式没有太大区别.这是程序员的个人选择吗?如果是这样,为什么它包含在C中呢?

c function-prototypes

5
推荐指数
2
解决办法
1869
查看次数

为什么我可以在C中调用函数而不在C++中声明但不在C++中?

在C++中,在声明函数之前调用函数是一个编译器错误.但在C语言中,它可能会编译.

#include<stdio.h>
int main()
{
   foo(); // foo() is called before its declaration/definition
} 

int foo()
{
   printf("Hello");
   return 0; 
} 
Run Code Online (Sandbox Code Playgroud)

我已经尝试过并且知道它是正确的,但我无法理解它背后的原因.任何人都可以解释编译过程是如何实际发生的,并且两种语言都有所不同.

c c++

5
推荐指数
2
解决办法
1928
查看次数

在main()之前,之后或之内声明函数是否有优势?

我正在尝试为嵌入式系统学习C语言。目前,我正在学习基础知识,但找不到一个基本问题的答案。当我编写一个简单的C程序时,我以三种方式声明了一个名为maximum()的函数。我将通过以下示例对其进行解释:

1-)在下面的程序中,该函数在main之外和main之前声明:

#include <stdio.h>

int maximum(int x, int y)
 {
    int z;
    z = (x >= y) ? x : y;
    return z;
}

int main(void)
{
    int result = maximum(30, 50);
    printf("%d", result);
    return(0);
}
Run Code Online (Sandbox Code Playgroud)

2-)现在,在主函数的外部和之后声明该函数的下面:

#include <stdio.h>    

int main(void)
{
    int result = maximum(30, 50);
    printf("%d", result);
    return(0);
}

int maximum(int x, int y)
 {
    int z;
    z = (x >= y) ? x : y;
    return z;
}
Run Code Online (Sandbox Code Playgroud)

3-)最后,在主函数内部声明以下函数:

#include <stdio.h>

int main(void)
{ …
Run Code Online (Sandbox Code Playgroud)

c program-entry-point declaration function

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

调用没有原型的C函数

我有一个file1.c调用函数的C文件(比方说) fun1(1,b).

这个函数fun1(int a,int b)驻留在另一个C文件中(比方说file2.c),但它的原型不包含在头文件中(比方说file2.h). file2.h包括在内file1.c.

我的问题是,如果我打电话fun1(a,b)file1.c,它会通过将控制传递给函数定义file2.c吗?或者是否会发生异常或预期的行为是什么?

我一定要给出一个原型fun1(int a, int b)file2.h这个工作?

c function function-prototypes

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

功能没有任何返回类型

我知道有两种类型的函数:void和返回某些函数的函数(int,double等).但是如果在没有任何return语句的情况下声明函数怎么办?它被认为是一种void功能吗?例如,

myFunction(int value){
.......
}
Run Code Online (Sandbox Code Playgroud)

c function

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