ちょっとした実験として C++ を使用して "yes" コマンドのクローンを作成しようとしています (これは Ubuntu 12.10 にあります)。ここに小さな問題があります。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <cstdlib>
using namespace std;
void yes (char* cmd[]) {
if ( cmd != NULL ) {
while (true) {
cout << cmd[1] << endl;
}
} else {
while (true) {
cout << "y" << endl;
}
}
}
int main(int argc, char** argv[]) {
yes(argv[1]);
return 0;
}
そのままにしておくと、タイトルに記載されている警告が表示されます。argv のアスタリスクの 1 つを削除すると、「char*」から「char**」への変換に関するエラーが発生します。そして、余分な機能を削除します(つまり、すべてをメインに配置します):
int main(int argc, char** argv) {
if ( argv != NULL ) {
while (true) {
cout << argv[1] << endl;
}
} else {
while (true) {
cout << "y" << endl;
}
}
return 0;
}
警告に違いはありません。
高度なありがとう...