我在Solaris 10框中。 我使用的編譯器是:/opt/solstudio12.2/bin/CC非常簡單編譯在Solaris 10上失敗
編譯下面顯示的文件(myTest2.C)失敗。
% CC -I. -o myTest2 myTest2.C
"myTest2.C", line 30: Error: "{" expected instead of "myFunc".
"myTest2.C", line 33: Error: "{" expected instead of "myFunc".
2 Error(s) detected.
- 爲什麼是錯誤調用myFunc的(),而聲明一個變量?
- 是因爲它不在任何功能?
- 如何解決它?
僅供參考,我正在寫的字符串obfuscater該經過的C++代碼行,並替換一個引用字符串的(例如:「的myString」)實例與一個函數調用(例如:scrambleString(「myString的」)) 。 myFunc的在這個例子類似於scrambleString
#include <iostream>
#include <string>
using namespace std;
char* myFunc(string inString)
{
char outString[1024];
int i;
for (i = 0; i <= inString.size()-1; i++)
outString[i] = inString[i];
outString[i+1] = '\0';
return outString;
}
// This Works:
static char myVariable1 [ ] = "MyString1" ;
// This Breaks:
static char myVariable2 [ ] = myFunc("MyString2") ; // Line #30
// This Breaks:
char myVariable5 [1024] = myFunc("MyString3"); // Line
#33
int main()
{
// This Works:
string Z = myFunc("Gdkkn Vnqkc");
cout << "Z = " << Z << endl << endl;
}
什麼是與'爭奪(「MyString的」)'代替「MyString的」的地步?字符串文字仍然在你的代碼中,解密! –
對不起,我在發表該聲明時不清楚/不完整。我應該說以下內容: 僅供參考,我正在寫一個字符串混淆器,它通過C++代碼行並用函數調用替換引用字符串的實例(例如:「myString」)(例如:descrambleString(「ut5ml @de「))。這個例子中的myFunc類似於descrambleString,「ut5ml @ de」是「myString」的混亂版本。 descrambleString()將在運行時將其轉換回原始。 我認爲沒有人會對這些細節感興趣或者他們是相關的。我的錯。 –