C在VC里面注意的问题,大杂烩(累积版)

 

在VC6中运行以下代码
////////////////////////////////
//main.c

#include <stdio.h>

int main()
{
 char a[100];
 memset(&a, 0, 100);
 char b;

 return 0;
}

/////////////////////////////////
编译器将会报一个编译错误,
syntax error : missing ';' before 'type'
这个错误出在

char b;

这一行。
然后将程序改为
////////////////////////////////
//main.c

#include <stdio.h>

int main()
{
 char a[100];
 char b;
 memset(&a, 0, 100);

 return 0;
}

/////////////////////////////////

程序就会顺利通过编译。

经过测试发现
在VC中编译c程序,在一个大括号括起的范围内,如果变量声明放在了函数调用的后面,那么编译的时候就会报错:
syntax error : missing ';' before 'type'

然后你可以修改为把变量声明放在函数调用之前。就会顺利通过编译。

这个问题在vc编译c++程序,或者gcc编译c程序的时候都不会出现,仅仅在vc编译c程序的时候才会出现.

 

----------------------------------------------------------------------------------------------------------

 


bool SelectFile(OPENFILENAMEEX *ofn)
{
 
 TCHAR szFile[MAX_PATH];

 ofn->lStructSize = sizeof(OPENFILENAMEEX);
 ofn->lpstrFilter = _T("All Files (*.*)/0*.*/0");
 ofn->lpstrFile = szFile;
 ofn->nMaxFile = sizeof(szFile)/sizeof(szFile[0]);
 ofn->lpstrInitialDir = _T("//Program Files"); // 这里可以指定打开的默认目录
 ofn->lpstrTitle = _T("Select a Zip");
 ofn->ExFlags = OFN_EXFLAG_THUMBNAILVIEW | OFN_EXFLAG_HIDEDRMPROTECTED;
 return GetOpenFileNameEx(ofn);
}

int SelFolder(HWND hParent, wstring &str)
{
 InitCommonControls();
 LPMALLOC lpMalloc;
    ::SHGetMalloc(&lpMalloc);

 BROWSEINFO bi;
 char name[MAX_PATH];
 ZeroMemory(&bi,sizeof(BROWSEINFO));
 bi.hwndOwner      = hParent;
 bi.pszDisplayName = name;
 bi.lpszTitle      = LPCSTR(TEXT("Select folder"));
 bi.ulFlags        = BIF_RETURNFSANCESTORS|BIF_RETURNONLYFSDIRS;
 bi.lpfn           = NULL;
    bi.lParam         = 0;

 LPITEMIDLIST idl  = SHBrowseForFolder(&bi);
 if(idl == NULL)
  return 0;
 return SHGetPathFromIDList(idl, LPTSTR(str.data()));

}

void OnBrower()
{
 
 SHELLEXECUTEINFO ShExecInfo = {0};
    ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
    ShExecInfo.hwnd = NULL;
    ShExecInfo.lpVerb = L"Open";
    ShExecInfo.lpFile =  L"fexplore.exe";       
    ShExecInfo.lpParameters = L"//Program Files";   
    ShExecInfo.lpDirectory = NULL;
    ShExecInfo.nShow = SW_SHOW;
    ShExecInfo.hInstApp = NULL;   
    ShellExecuteEx(&ShExecInfo);

}

 

 

-----------------------------------------------------------------------------------------------------------------

 

e(E1|E2|E3)的实现:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值