Tag: 标准

(域名)子域名中是否有下划线“_”?

子域名(域名)是否有下划线_ ?

对multidimensional array的一维访问:定义明确的C?

我想我们都同意,通过以一维方式解引用其第一个元素(可能是偏移量)的指针来访问一个真正的multidimensional array被认为是惯用的C,例如: void clearBottomRightElement(int *array, int M, int N) { array[M*N-1] = 0; // Pretend the array is one-dimensional } int mtx[5][3]; … clearBottomRightElement(&mtx[0][0], 5, 3); 然而,在我的语言律师需要说服,这实际上是明确的C! 尤其是: 标准是否保证编译器不会在例如mtx[0][2]和mtx[1][0]之间填充内容? 通常,索引数组的末尾(除了末尾之外)是未定义的(C99,6.5.6 / 8)。 所以下面显然是不确定的: struct { int row[3]; // The object in question is an int[3] int other[10]; } foo; int *p = &foo.row[7]; // ERROR: […]

你引用HTML5的属性?

属性引用在HTML5中是可选的。 引用他们有什么优点/缺点? id=example <!–quotes optional–> href=http://example.com <!–quotes optional–> class="example example-1" <!–quotes required due to space–> href="http://example.com/p=47" <!–quotes required due to '=' sign–> 更新:根据答案增加优势: 引用所有属性的优点: 所有编辑都可以正确处理 更一致 更好的可移植性(更容易改变文档types) 更容易维护(特别是如果属性可能变空) 更容易“查找和replace”更改 更清洁的文档(如果您认为引用提高可读性) ? 省略可选引号的优点: 稍微减less文件大小 更清洁的文档(如果你喜欢最小的文字) ?

void main和int main之间的区别?

我声明C ++程序的方式是否重要?

HTML标签上的非标准属性。 好东西? 坏事? 你的想法?

对于标签上的非标准属性,HTML(或者也许只是XHTML?)是相对严格的。 如果它们不是规范的一部分,那么你的代码被认为是不合规的。 然而,非标准属性对于将元数据传递给Javascript是相当有用的。 例如,如果链接假设显示一个popup窗口,则可以在一个属性中设置popup窗口的名称: <a href="#null" class="popup" title="See the Popup!" popup_title="Title for My Popup">click me</a> 或者,您可以将popup窗口的标题存储在一个隐藏元素中,如跨度: <style> .popup .title { display: none; } </style> <a href="#null" title="See the Popup!" class="popup"> click me <span class="title">Title for My Popup</span> </a> 然而,我很茫然地想知道哪一个应该是一个首选的方法。 第一种方法更简洁,而且我猜测,它不会像search引擎和屏幕阅读器那样紧张。 相反,第二个选项使得存储大量数据变得更容易,因此更通用。 它也符合标准。 我很好奇这个社区的想法是什么。 你如何处理这样的情况? 第一种方法的简单性是否超过潜在的缺点(如果有的话)?

严格的标准:mysqli_next_result()错误与mysqli_multi_query

我曾尝试使用multi_query,但我不断得到一个严格的标准消息popup。 $querystring = "INSERT INTO responses VALUES('1', '2', '3', '4'); INSERT INTO responses VALUES('1', '2', '3', '4')"; if (mysqli_multi_query($db, $querystring)) { do { if ($result = mysqli_store_result($db)) { // } } while (mysqli_next_result($db)); } echo "end"; 我得到的错误消息是: 严格标准 :mysqli_next_result():没有下一个结果集。 请调用mysqli_more_results()/ mysqli :: more_results()来检查是否调用这个函数/方法 我试过添加和删除-; 但没有运气。

ANSI C中parensexpression式包围的复合语句(块)?

浏览Linux内核源代码我发现了一些代码 ,其中由括号括起来的语句块被当作一个expression式来处理,也就是说,一个expression式的值是最后一个语句的值。 例如: int a = ({ int i; int t = 1; for (i = 2; i<5; i++) { t*=i; } t; }); 我一直在研究ANSI C语法,试图弄清楚这段代码如何适合parsing树,但是我还没有成功。 那么,有没有人知道这个行为是由这个标准规定还是只是GCC的一个特点? 更新:我已经试过用flag -pedantic,编译器现在给我一个警告: warning: ISO C forbids braced-groups within expressions

“argv =可执行的名称”是一个可接受的标准还是一个通用的约定?

在C或C ++应用程序中将parameter passing给main()时, argv[0]始终是可执行文件的名称? 或者这只是一个共同的约定,并不能保证100%的时间是真实的?

数组放置 – 新需要缓冲区中的未指定的开销?

5.3.4 C ++ 11月2日草案的[expr.new]给出了例子: new(2,f) T[5]导致operator new[](sizeof(T)*5+y,2,f)的调用。 这里,x和y是表示数组分配开销的非负非指定值; 新expression式的结果将会被operator new[]返回的值所抵消。 这个开销可以应用于所有数组的新expression式 ,包括那些引用库函数operator new[](std::size_t, void*)和其他位置分配函数的expression式。 从一个新的调用到另一个调用的开销可能不同。 – 例子 ] 现在拿下面的例子代码: void* buffer = malloc(sizeof(std::string) * 10); std::string* p = ::new (buffer) std::string[10]; 根据上面的引用,第二行new (buffer) std::string[10]将在内部调用operator new[](sizeof(std::string) * 10 + y, buffer) std::string对象)。 问题是,如果y > 0 ,预分配的缓冲区将太小! 那么如何知道在使用array-new时需要预先分配多less内存呢? void* buffer = malloc(sizeof(std::string) * 10 + how_much_additional_space); std::string* […]

extern关键字对C函数的影响

在C中,我没有注意到函数声明之前使用的extern关键字的任何影响。 起初,我认为当定义extern int f(); 在单个文件中强制你在文件范围之外实现它。 但是我发现这两个: extern int f(); int f() {return 0;} 和 extern int f() {return 0;} 编译得很好,没有来自gcc的警告。 我用gcc -Wall -ansi ; 它甚至不会接受/ /评论。 函数定义之前使用extern有没有影响? 或者它只是一个可选的关键字,对function没有副作用。 在后一种情况下,我不明白为什么标准devise人员select用多余的关键字来抛弃语法。 编辑:澄清,我知道有variables的extern的用法,但我只是在function问extern 。