Портирование кода, который требует, чтобы код по умолчанию был без знака, к базе кода, которая не имеет этого требования - PullRequest
0 голосов
/ 23 августа 2010

Я прошел через многочисленные вопросы относительно подписанного / неподписанного символа. Я понимаю, что есть три различных типа символов в C ++. В настоящее время у меня есть большая кодовая база, которая скомпилирована с Visual Studio - для параметра «default char unsigned» установлено значение «No». Теперь я должен добавить конкретный проект в нашу кодовую базу (интегрировать его, чтобы стать частью нашего текущего набора инструментов). Этот проект поставляется с документацией, в которой настоятельно подчеркивается, что для его подписи по умолчанию необходим символ unsigned.

Теперь я начал задаваться вопросом: почему автор использовал «char», а не «unsigned char», если ему нужно, чтобы char был без знака? Что может пойти не так, если я изменю нашу кодовую базу, чтобы в настройках «default unsigned char» было установлено «Yes»? И что может пойти не так, если я заменю все "char" на unsigned char во всем проекте, который я должен добавить в нашу кодовую базу?

На самом деле, наверное, я должен был спросить: «Как мне добавить этот проект в нашу кодовую базу, ничего не нарушая», но для этого нужно было найти решение, и я бы ничего не узнал;)

1 Ответ

3 голосов
/ 23 августа 2010

Хм, святая хрень.Можете ли вы сказать нам, откуда появился этот код, чтобы мы могли его избежать?:)

Моим первым инстинктом было бы создать код в виде отдельной библиотеки, на которую ссылается ваш существующий проект, и соблюдать осторожность при взаимодействии с ним.Не зная точного характера рассматриваемого кода, я не знаю, возможно ли это.

Если код, который вы вводите, действительно предполагает, что char не подписан, вы должны будьте в порядке, просто изменив его, сделав его явным unsigned char, но возникает вопрос о том, придется ли вам позже объединяться с новыми версиями кода, поэтому я все же предпочел бы решение для библиотеки.

...