C++中的陷阱果然很多,不久前又犯了一次错。我在某个头文件中定义了_UTILITY_,接着包含了它和vector头文件,结果就在之后的vector声明中就出错(显示不允许使用不完整的类型)了。这就让我很郁闷了:我明明包含了vector头文件,而且也使用using指示。在一些简单的分析和尝试之后,问题很容易就解决了。这是一个命名冲突的问题,我们之前定义的_UTILITY_和vector头文件冲突了。下面附上简单的问题代码:
utility.h
1 #ifndef _UTILITY_ 2 #define _UTILITY_ 3 4 #endif
utility.cpp
1 #include"utility.h" 2 #include<iostream> 3 #include<vector> 4 5 using std::vector; 6 using std::cout; 7 using std::endl; 8 9 int main() 10 { 11 12 vector<int> ivec = { 1, 2, 3 }; 13 //这会提示不允许使用不完整的类型 14 for (auto i : ivec) 15 cout << i << endl; 16 17 18 system("pause"); 19 return 1; 20 21 }
命名是一个问题,我感觉我现在的命名规范就是win32方式+其他方式,比如:类名首字母大写,函数、方法名单词首字母大写,类成员前加下划线,还有一些通用的。微软的匈牙利命名法有些地方现在看来有些繁琐,iNum一般人都会直接命名为num。这样的可读性一样,而编译器也会提示类型为int。然后用拼音命名感觉太不专业了, 所以还是多背单词吧!
时间: 2024-10-18 14:50:34