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

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

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

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам