Это действительно деталь реализации. Когда-то давно я думал, что это может быть нулевой байт или тысяча байт, что он не имеет никакого отношения к спецификации языка. Но, посмотрев на стандарт (раздел 5.3.3), sizeof
определяется как всегда возвращающий один или более, независимо от того, что.
Размер самого производного класса должен быть больше чем нуль.
blockquote>Это требуется, помимо прочего, для обработки массивов объектов и указателей. Если вашим элементам было присвоено нулевое значение, то
&(array[0])
будет идентичным&(array[42])
, что вызовет всевозможные хаосы для ваших циклов обработки.Причина, по которой это может быть не так машинное слово состоит в том, что в нем нет элементов, которые фактически требуют, чтобы он был выровнен на границе слова (например, целое число). Например, если вы помещаете
char x; int y;
внутри класса, мой GCC синхронизирует его с восемью байтами (поскольку второй int должен быть выровнен в этой реализации).
Попробуйте посмотреть на PHPExcel. Это простой пример, который создает файл Excel с двумя листами:
<?php
require_once 'PHPExcel.php';
require_once 'PHPExcel/IOFactory.php';
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Create a first sheet, representing sales data
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Something');
// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle('Name of Sheet 1');
// Create a new worksheet, after the default sheet
$objPHPExcel->createSheet();
// Add some data to the second sheet, resembling some different data types
$objPHPExcel->setActiveSheetIndex(1);
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'More data');
// Rename 2nd sheet
$objPHPExcel->getActiveSheet()->setTitle('Second sheet');
// Redirect output to a client’s web browser (Excel5)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="name_of_file.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
Если вы хотите, чтобы ваш PHP-скрипт создавал файл Excel, записывал в него некоторые данные на любом листе и т.д., а затем предлагал его клиенту для загрузки, вы можете просто использовать встроенное в PHP расширение COM. См: http://us2.php.net/manual/en/class.com.php для всевозможных примеров. Однако вам понадобится Excel (или клон OpenOffice), установленный на сервере. Если у вас его нет, возможно, ответ Марка Бейкера выше будет работать и без него.