我正在探索一些程序,这些程序在一系列文件中包含数千行,其中包含几乎同样多的变量和指针。 每当我遇到一个变量时,我必须在所有文件中向后追踪它以检查它是一个简单的指针还是一个数组,造成极大的不便。 有没有办法让我创建一个函数,告诉我是否有多个与该指针关联的内存块? 或者是否有内置功能,只需给出二进制答案.. !!!
答案 0 :(得分:1)
简短的回答是否定的 - 即使在运行时也很难判断指针是否与数组有关。
如果您使用一个好的IDE,那么您可能会将鼠标悬停在变量名称上并显示定义,在很多情况下,它会为您提供所需的答案。
我使用Eclipse,我发现它非常善于告诉我变量的类型。其他人会使用其他IDES; YMMV。
答案 1 :(得分:0)
您可以尝试使用交叉引用工具。它的解析器有可能是愚蠢的,不会像错误的IDE一样受到错误的阻碍。 Source Navigator是我几年前玩过的。
答案 2 :(得分:0)
这段代码可以帮到你。
#include <iostream>
using namespace std;
typedef char true_type;
typedef struct{ char one; char two;} false_type;
template <size_t N, typename T>
true_type test_func( T (&anarr)[N]);
false_type test_func( ... );
{
template <typename T>
bool is_an_array( const T& a) // const reference is important !!
if (sizeof (test_func(a)) == sizeof(true_type) ) return true;
else return false;
}
int main()
{
char testarr[10] = {'a','b','c','d','e','f','g','h','i','j'};
if (is_an_array(testarr) ) cout << "testarr is an array" << endl; else cout <<
"testarr is not an array" << endl;
char a_char = 'R';
if (is_an_array(a_char)) cout << "a_char is an array" << endl; else cout << "a_char is
not an array" << endl;
}