Вариант со стилем для span замечательный, но он не решает проблему со списками.
Мой же пример браузер автоматически приводит к виду:
<p>Такой пример: </p><pre>alert("Привет, мир!")</pre> выводит окно с приветствием
jsfiddle.net/ur4f5gk2/1
Общая проблема в том, что <p> не может содержать блочные элементы.
Конечно можно задавать блочные стили для code, но тогда уж проще использовать вместо <p> тег <div> с классом .p, это решит и другие проблемы с остальными блочными элементами: ul, ol, pre. Но это костыль, и неиспользование родного тега для параграфа не самый лучший выход. Вот только, по всей видимости другого варианта нет.
PS. Обсуждение этой же проблемы на stackoverflow:
stackoverflow.com/questions/10601345/ul-element-ca...