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 }
c/c++常用的命名规范有PascalCase、camelCase、linux/unix_case以及匈牙利命名法。Google、id software等知名公司都有一套自己的C++命名规范,其中有许多地方值得我们学习。
对于变量,个人更喜欢linux/unix风格的,比如:string user_name,而函数/方法,个人更喜欢Pascal风格的,比如:void SetName(const string s)。
浙公网安备 33010602011771号