extern int foo
时间: 2024-01-05 10:03:27 浏览: 155
extern int foo是一个函数声明,它告诉编译器在其他文件中有一个名为foo的函数,返回类型为int。这个声明通常放在头文件中,然后在其他文件中包含这个头文件,以便在其他文件中使用foo函数。使用extern关键字可以使得函数声明更加简洁明了,同时也可以加快程序的编译速度。
举个例子,如果我们在a.c文件中定义了一个函数foo,然后在b.c文件中想要使用这个函数,我们可以在b.c文件中使用extern int foo来声明这个函数,然后就可以在b.c文件中使用foo函数了。
```c
// a.c文件中定义foo函数
int foo(int x) {
return x + 1;
}
// b.c文件中使用foo函数
extern int foo(int x);
int main() {
int result = foo(3);
return 0;
}
```
相关问题
在文件a中namespace A{ static int test_A =10; },而文件b中namespace A{ extern int test_A; },能否将文件a和文件b进行链接,举个例子
可以将文件a和文件b进行链接,只需要在另一个文件中定义namespace A,并且包含文件a和文件b即可。下面是一个例子:
假设我们有文件a.cpp和文件b.cpp,它们分别包含以下代码:
a.cpp:
```
namespace A {
static int test_A = 10;
}
```
b.cpp:
```
namespace A {
extern int test_A;
}
void foo() {
std::cout << A::test_A << std::endl;
}
```
然后我们可以在另一个文件中定义namespace A,并且将a.cpp和b.cpp链接起来:
main.cpp:
```
#include <iostream>
namespace A {
extern int test_A;
}
int main() {
std::cout << A::test_A << std::endl;
return 0;
}
```
编译命令可以是:
```
g++ -c -o a.o a.cpp
g++ -c -o b.o b.cpp
g++ -o main main.cpp a.o b.o
```
这样就可以将a.cpp和b.cpp链接到main中了。
assuming extern returning int怎么解决
在C语言中,`extern`关键字通常用于声明而不是定义函数,当你在一个文件中声明了一个函数,并希望其他文件能够访问它,你会在需要使用该函数的文件中使用`extern`来声明,而在包含函数定义的文件中使用`int`加上函数名来定义。
例如:
```c
// 文件foo.h
extern int myFunction();
// 文件foo.c (包含函数定义)
int myFunction() {
// 函数体...
return some_value;
}
// 文件main.c (使用函数)
#include "foo.h"
int main() {
int result = myFunction(); // 此处会链接到foo.c中的myFunction定义
// ...
}
```
这里的关键在于`extern`告诉编译器函数`myFunction`在别的地方定义,但在实际调用之前,不需要看到它的实现。如果你在试图返回`int`但忘记提供定义,编译器会在找不到函数实现时报错。所以,确保你在正确的地方包含了函数的定义,并且函数返回类型匹配预期。如果问题是关于函数无法正确返回`int`,那可能是因为函数内部缺少正确的返回语句或者类型错误。检查函数的实现是否正确无误即可解决问题。
阅读全文