Портирование кода, который требует, чтобы символ по умолчанию был неподписан, к базе кода, которая не имеет этого требования
Я прошел через многочисленные вопросы, касающиеся подписанных / неподписанных символов. Я понимаю, что есть три различных типа символов в C++. В настоящее время у меня есть большая кодовая база, которая скомпилирована с Visual Studio - для параметра "char char unsigned" по умолчанию установлено значение "Нет". Теперь я должен добавить конкретный проект в нашу кодовую базу (интегрировать его, чтобы стать частью нашего текущего набора инструментов). Этот проект поставляется с документацией, в которой настоятельно подчеркивается, что для его подписи по умолчанию необходимо использовать char.
Теперь я начал задаваться вопросом: почему автор использовал "char", а не "unsigned char", если ему нужно, чтобы char был без знака? Что может пойти не так, если я изменю нашу кодовую базу, чтобы настройки "default unsigned char" были установлены на "Yes"? И что может пойти не так, если я заменю все "char" на unsigned char во всем проекте, который я должен добавить в нашу базу кода?
На самом деле, наверное, я должен был спросить: "Как я должен добавить этот проект в нашу кодовую базу, не нарушая ничего?", Но это потребовало бы решения, и я бы ничего не узнал;)
1 ответ
Хм, черт возьми. Можете ли вы сказать нам, откуда появился этот код, чтобы мы могли его избежать?:)
Моим первым инстинктом было бы создать код в виде отдельной библиотеки, с которой связан ваш существующий проект, и быть осторожным, когда вы взаимодействуете с ним. Не зная точного характера рассматриваемого кода, я не знаю, возможно ли это.
Если код, который вы вводите, действительно предполагает char
без знака, вы должны быть в порядке, просто изменив его, чтобы сделать его явным unsigned char
, но возникает вопрос о том, придется ли вам позже объединяться с новыми версиями кода, поэтому я бы все же предпочел библиотечное решение.