刚刚接触C++ 遇到点问题 请前辈指点下
我用vs2005 新建一个win32的项目 代码如下
#include "stdafx.h"
#include "iostream"
using namespace std;
#define SAFE_DELETE_ARRAY(P)
{
if(p){
delete []p;
p=NULL;
}
}
using std::cin;
using std::cout;
using std::endl;
int _tmain(int argc, _TCHAR* argv[])
{
int n=0;
char* strIn=NULL;
cout<<"输入多少个字符"<<endl;
cin>>n;
if(strIn==NULL && n>0)
{
strIn=new char[n];
}
cout<<"请输入字符"<<endl;
cin>>strIn;
cout<<"你输入的字符是:"<<endl;
cout<<strIn;
SAFE_DELETE_ARRAY(strIn);
return 0;
}
作用是使用动态内存分配 由程序输入决定数组大小,从键盘输入数据并打印
在调试的时候产生错误 error C2447: '{' : missing function header (old-style formal list?)
应该怎样改
刚刚学习C++ 如果有什么低级错误 请见谅 谢谢各位
[解决办法]
//手头没MFC调试器,稍微改了下,eclipse c++下编译通过#include "iostream"using namespace std;#define SAFE_DELETE_ARRAY(p) {\//大写改为小写,且宏定义要用'\'连接 if(p) {\ delete []p;\ p=NULL;\ }\}\using std::cin;using std::cout;using std::endl;int main() { int n = 0; char* strIn = NULL; cout << "输入多少个字符" << endl; cin >> n; if (strIn == NULL && n > 0) { strIn = new char[n]; } cout << "请输入字符" << endl; cin >> strIn; cout << "你输入的字符是:" << endl; cout << strIn; SAFE_DELETE_ARRAY(strIn); return 0;}
[解决办法]
#include <iostream>using namespace std;using std::cin;int main(){int n=0;char* strIn=NULL;cout<<"输入多少个字符"<<endl;cin>>n;if(strIn==NULL && atoi(n)>0){strIn=new char[n];}cout<<"请输入字符"<<endl;cin>>strIn;cout<<"你输入的字符是:"<<endl;cout<<strIn;delete []strIn;strIn=NULL;return 0;}
[解决办法]
把这里换种方式写(比如简化)或许能解决。int _tmain(int argc, _TCHAR* argv[]);
[解决办法]
以下代码可编译通过 VS2005
#include "stdafx.h"#include "iostream"using namespace std;#define SAFE_DELETE_ARRAY(p){\ if(p){\ delete []p;\ p=NULL;\ }\}using std::cin;using std::cout;using std::endl;int _tmain(int argc, _TCHAR* argv[]){ int n=0; char* strIn=NULL; cout<<"输入多少个字符"<<endl; cin>>n; if(strIn==NULL && n>0) { strIn=new char[n]; } cout<<"请输入字符"<<endl; cin>>strIn; cout<<"你输入的字符是:"<<endl; cout<<strIn; SAFE_DELETE_ARRAY(strIn); return 0;}