BloggerAds廣告

顯示具有 C plus plus 標籤的文章。 顯示所有文章
顯示具有 C plus plus 標籤的文章。 顯示所有文章

2019年6月4日 星期二

[C Plue Plus] error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

在Build DirectShow的Sample時, 出現了此錯誤訊息.
網路上找了一下解法
將 operator=(LONG);改成 LONG operator=(LONG);
以下是發生原因
BaseClasses/ctlutil.h(278) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
错误发生在:operator=(LONG); 函数定义中,这是因为在VC6中,如果没有显示的指定返回值类型,编译器将其视为默认整型;但是vs2005不支持默认整型. 这个错误,解决方法如下:
打开project->BaseClasses properties->configuration->C/C++ ->Command Line,增加/wd4430选项。

2013年11月22日 星期五

[C++]多語言版本心得

之前在寫多語言版本的時候是
只會呆呆的在程式碼中建立不同語言的String Table
可是這樣子如果翻譯要改變, 或是新增其他的語言
就需要修改程式碼, 非常的不方便
這幾天找到了新的使用方式, 在這邊跟大家分享

2013年10月29日 星期二

[C++]LoadString的用法

由下列方式使用時
LPCTSTR szTest = (LPCTSTR)LoadString(g_hInst, IDS_ERRORMESSAGE, NULL, 0);
會出現沒有結尾字元的狀況
這時候在Project->Properties->Resource->Command Line中增加 "-n" 就可以解決

可是這只能用在VS2005/VS2008, 如果由OS來build, 不知道沒有此參數可以用

2013年10月28日 星期一

[C++]fatal error LNK1103: debugging information corrupt; recompile module 的解決方案

xxx.lib(xxx.obj)fatal error LNK1103: debugging information corrupt; recompile module 的解決方案
    再次遇到 fatal error LNK1103 這個常見的錯誤,花了很長時間才找到解決方案。記下最後解決辦法,希望對其他人有所幫助。
症狀:xxx.lib(xxx.obj) fatal error LNK1103: debugging information corrupt; recompile module
    OS: Win7/Vista    SDK:VS2005 sp1
解決辦法:
    1. 管理員身份運行VS2005
    2. 下載補丁for VS2005 sp1 https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=18623(可選)
原因及參考:
    1. http://support.microsoft.com/kb/949009/
    2.http://social.msdn.microsoft.com/Forums/en-US/vssmartdevicesnative/thread/2857d97d-f8c2-4390-97e0-a1be54348b52

2013年10月22日 星期二

[C++]最大公因數和最小公倍數




//最大公因數
int gcd(int a, int b)
{
    int nTemp = 0;
    while(a%b != 0)
    {
        nTemp = a%b;
        a = b;
        b = nTemp;
    }
    return b;
}

//最小公倍數
int lcm(int a, int b)
{
    return ((a*b)/gcd(a, b));
}

[C++]中序轉前序


int _tmain(int argc, _TCHAR* argv[])
{
 stack sOperator, sOutput;
 char szData[128];
 sprintf(szData, "1+2+3*4+5*9-1");
 for (int i = strlen(szData) - 1; i >= 0 ; i--)
 {
  switch(szData[i])
  {
   case '+' :
    while ((!sOperator.empty()) && ((sOperator.top() == '*') || sOperator.top() == '/'))
    {
     sOutput.push(sOperator.top());
     sOperator.pop();
    }
    sOperator.push(szData[i]);
    break;
   case '-' :
    if (szData[i - 1] == '(')
    {
     sOutput.push(szData[i--]);
     sOutput.push(szData[i--]);
    }
    else
    {
     while(!sOperator.empty() && (sOperator.top() == '*' || sOperator.top() == '/'))
     {
      sOutput.push(sOperator.top());
      sOperator.pop();
     }
     sOperator.push(szData[i]);
    }
    break;
   case '*' :
   case '/' :
   case ')' :
    sOperator.push(szData[i]);
    break;
   case '(' :
    while(sOperator.top() != ')')
    {
     sOutput.push(sOperator.top());
     sOperator.pop();
    }
    sOperator.pop();
    break;
   default :
    sOutput.push(szData[i]);
    break;
  }
 }
 while (!sOperator.empty())
 {
  sOutput.push(sOperator.top());
  sOperator.pop();
 }

 while(!sOutput.empty())
 {
  printf("%c", sOutput.top());
  sOutput.pop();
 }
 printf("\r\n");
 system("pause");
 return 0;
}

[C++]後序表示法計算

#include "stdafx.h"
#include
#include "stack"
#include
#include
using namespace std;
void Show(char *szShow);
bool IsOperator(char pValue);
float Calculate(float fFirst, float fSecond, char cOperator);

[C++]How to generate .rel file with VS2005

rel檔主要是在Build OS時, 所需要的一個對照檔

以下是產生的方式

在Property Page -> Linker -> Command Line下
新增
/savebaserelocations:"$(TargetDir)\$(TargetName).rel"
/fixed:No