私はSolaris 10ボックスを使用しています。私が使用しているコンパイラは次のとおりです: /opt/solstudio12.2/bin/CC
以下に示すファイル (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() を呼び出すとエラーになるのはなぜですか?
- どの機能にも含まれていないからですか?
- それを回避する方法は?
参考までに、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;
}