2015-05-18 3 views
-2

Для поддержки общего языка для выполнения установлено значение (/ clr). Когда я пытаюсь использовать аргумент (argv [1]), он возвращает «true», что на самом деле не так, поскольку у меня есть путь, переданный в него как аргумент. Может ли кто-то любезно помочь мне, как я должен избегать этого. предупреждения Компиляции состояние -> принуждая значение BOOL «истина» или «ложь» (предупреждение о производительности)C++ int main (int argc, char * argv []) аргументы преобразуются в целые значения

int main(int argc, char* argv[]) 
{ 
    Console::WriteLine(argv[1]); 
} 

Ответ: «истинное»

+1

Вам нужно показать код, пожалуйста, отредактируйте свой вопрос, чтобы включить код, с которым у вас проблемы. –

+1

Что значит «возвращает истину»? –

+0

int main (int argc, char * argv []) { \t Консоль :: WriteLine (argv [1]); } – user2982029

ответ

1

Проблемы заключается в том, что нет Console::WriteLine функции принимает char*. Вы должны преобразовать его в объект String.

Что касается предупреждающего сообщения и вывода, это потому, что, поскольку компилятор не может найти точное соответствие для вызова WriteLine, он, если возможно, будет выбирать другую функцию. В этом случае он выбирает аргумент Boolean, потому что указатели могут быть неявно преобразованы в bool, которые, в свою очередь, могут быть преобразованы в Boolean. Вывод "true", потому что любой ненулевой указатель считается истинным в преобразовании с указателем на bool.

+0

Спасибо, Иоаким, ты прав. Простой printf был также тем, что могло бы дать мне строку в нем – user2982029

Смежные вопросы