gpt4 book ai didi

C++ 编译器不会为未声明的变量抛出错误

转载 作者:行者123 更新时间:2023-11-28 02:37:08 24 4
gpt4 key购买 nike

我试图搜索这个具体问题,但没有找到任何具体的问题。

我在我的程序中使用了一个未声明的变量,编译器没有提示,它只是给出了一个警告,程序运行正常。我的gcc版本是4.1.2

下面是我为重现此问题而编写的示例程序,未声明变量“index”,为什么编译器将“index”视为函数,它在哪里找到函数的定义?

#include <iostream>
using namespace std;

int testfunction()
{
try {
cout << "inside testfunction method\n";
return 2;
} catch(...) {
cout << "caught exception" << index << endl;
}
return 1;
}
int main()
{
cout << "Testfunction return value : " << testfunction() << endl;
}

编译:

~ g++ throwreturntest.cpp 
throwreturntest.cpp: In function ���int testfunction()���:
throwreturntest.cpp:11: warning: the address of ���char* index(const char*, int)���, will always evaluate as ���true���

运行:

~  ./a.out 
inside testfunction method
Testfunction return value : 2

最佳答案

看起来 index 是 GCC 内置函数的名称: http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

所以它已经声明了,只是不是你声明的。

关于C++ 编译器不会为未声明的变量抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27084594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com