我想用compound literal
åˆå§‹åŒ–Matrix4
类型的å˜é‡ã€‚æˆ‘çš„æž„é€ å‡½æ•°éœ€è¦float*
。
所以这是我的åˆå§‹åŒ–线:
const Matrix4 Matrix4::identity ( (float[16]) { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f } );
这似乎应该å¯è¡Œï¼Œä½†Visual Studioç§°å®ƒæ˜¯â€œéžæ ‡å‡†æ˜¾å¼ç±»åž‹è½¬æ¢â€ã€‚但我想ä¿ç•™â€œå•行åˆå§‹åŒ–â€ï¼Œé™¤éžçœŸçš„æœ‰æ›´æ–¹ä¾¿çš„æ–¹å¼ã€‚
ç”æ¡ˆ 0 :(得分:4)
您使用ä¸ç›¸å…³çš„陿€æˆå‘˜è¯¦ç»†ä¿¡æ¯ä½¿é—®é¢˜è¿‡äºŽå¤æ‚。事实上,这个问题å¯ä»¥å¾ˆå®¹æ˜“地å¤åˆ¶ä¸ºï¼š
void foo(float* );
void k() {
foo((float[4]){1, 2, 3, 4});
}
这里有一个为C99定义的å¤åˆæ–‡å—'ã€‚å®ƒåœ¨æ ‡å‡†çš„C ++ä¸ä¸å¯ç”¨ï¼Œä½†æ˜¯ä¸€äº›ç¼–译器具有支æŒå®ƒçš„æ‰©å±•。从问题本身æ¥çœ‹ï¼Œä¼¼ä¹ŽMSVC也支æŒè¿™ç§æ‰©å±• - 它在消æ¯ä¸æåˆ°äº†è¿™ä¸€ç‚¹ - 但是ä¸å…许代ç 。å¯èƒ½æœ‰ä¸€ç§æ–¹æ³•å¯ä»¥åœ¨MSVC上明确å¯ç”¨å®ƒï¼Œä½†æˆ‘䏿˜¯è¿™æ–¹é¢çš„专家。
åœ¨è¿™ç§æƒ…况下,我真的没有ç†ç”±å†™å‡ºä¸ç¬¦åˆè§„范的代ç ï¼Œå› æ¤æˆ‘会æå€¡å对它。
编辑åŽå›žç”é—®é¢˜ï¼Œå®žé™…ä¸Šæœ‰å‡ ç§æ–¹æ³•å¯ä»¥å®žçްå•线呼å«ã€‚å¯ä»¥ä½¿å‡½æ•°æŽ¥å—std::initializer_list<float>
表示å¯å˜æ•°é‡çš„傿•°ï¼Œstd::array<float, 16>
表示固定数é‡çš„傿•°ï¼Œæˆ–gsl::span
。