1. QT_NO_CAST_FROM_ASCIIは、C言語スタイルの文字列またはポインタをUnicodeに自動変換することを禁止しています。
char cc[] = "hello";
QString str = cc;
debug str;
QString str2 = "hello";
debug str2;
これが変換、C言語スタイルの文字ポインターです。
const char * p = "hello";
そして、C言語スタイルの文字列cc []をQStringに追加し、プロファイルに追加します。
DEFINES += QT_NO_CAST_FROM_ASCII
その後、そのような変換は禁止されます:
2. QT_RESTRICTED_CAST_FROM_ASCIIは配列変換を禁止し、ポインターをUnicodeに変換できるようにします。
3. QT_NO_CAST_TO_ASCIIは、QStringをC文字列に変換する操作を禁止します。QByteArray
の挿入操作は、QCharのtoAscii()を呼び出してQStringをC文字列に変換し、QByteArrayに挿入します。このマクロを有効にすると、この操作は禁止されます。同様に、QStringの追加、QStringの挿入、QStringの置換は禁止され、+ = QStringは禁止され、indexOf QStringは禁止され、lastIndexOfQStringは禁止されます。