В Firefox перейдите к Файлу => Установка Страницы. Существует флажок для "Фона печати (окрашивает & изображения)". Просто проверьте, что и Вы должны быть все установлены.
Быстро и грязно, но работает для QApplication
:
char *argv[] = {"program name", "arg1", "arg2", NULL};
int argc = sizeof(argv) / sizeof(char*) - 1;
Для более полного и соответствующего стандарту C решения см. ответ Д.Шоули .
Почему ваше решение не работает, очень просто:
array [i] [j]
дает матрицу i * j
. Но на самом деле вам нужен массив с указателями на строки в нем.
Если вы хотите быть безумно безрассудным, вам нужно что-то вроде следующего. Ключевыми моментами являются то, что argv
не является const
, argv
равно NULL
завершено, argc
является числом используемые элементы в argv
, включая имя программы . Он должен быть изменяемым, чтобы вы не могли использовать строковые литералы - argv [i]
требуется для указания на изменяемый массив символов.
int my_main() {
char arg0[] = "programName";
char arg1[] = "arg";
char arg2[] = "another arg";
char* argv[] = { &arg0[0], &arg1[0], &arg2[0], NULL };
int argc = (int)(sizeof(argv) / sizeof(argv[0])) - 1;
QApplication the_application(argc, &argv[0]);
return the_application.run();
}
Стандарт (ISO / IEC 9899: 1999, раздел 5.1.2.2) .1) утверждает, что следующее верно для argc
и argv
в размещенной среде:
argc
должно быть неотрицательным. argv [argc]
должен быть нулевым указателем. argc
больше нуля, члены массива с argv [0]
по argv [argc-1]
включительно должны содержать указатели на строки, которым среда хоста присваивает значения, определяемые реализацией, до запуска программы из другого места в размещенной среде. Если среда хоста не способна предоставлять строки с буквами как в верхнем, так и в нижнем регистре, реализация должна гарантировать, что строки принимаются в нижнем регистре. argc
больше нуля, строка, на которую указывает argv [0]
, представляет имя программы ; argv [0] [0]
должен быть нулевым символом, если имя программы недоступно из среды хоста. Если значение argc
больше единицы,
весь срок службы QApplication
объект. Кроме того, argc
должен быть
больше нуля и argv
должен
содержать хотя бы один допустимый символ
строка.
…
Примечание: argc
и argv
могут быть изменены
поскольку Qt удаляет аргументы командной строки
Как насчет ...
int argc = 2;
const char* argv[] ={"program","first-argument"};
... или если вам нужно, чтобы они были неконстантными ...
int argc = 2;
char* argv[] ={strdup("program"),strdup("first-argument")};
Почему вас беспокоит размер текста в argv, я бы просто позволил компилятору сделать это:
int argc = 1;
char* argv[] = {"Hello Qt!"}; // exactly as it is defined in main
Хотя ни стандарты C, ни C ++ этого не требуют, большинство компиляторов делают аргументы для main доступными для вас как _argv и _argc. Если память не изменяет, этого требует POSIX. В любом случае, вам нужно использовать что-то вроде:
extern int _argc;
extern char *_argv[];
и оттуда вы можете использовать их как обычно.
Надеюсь, это сработает:
char* argv[1];
argv[0] = "cgalExample";