This pragma directive tells the compiler to use the correction
version to compile the contract and to reject compiling with an incompatible
compiler. This annotation ensures that our code is always compiled correctly as
we intended.
The version pragma is used as follows:
pragma solidity ^0.4.14;
This directive is optional, but is highly recommended to
annotate every source file with this version pragma. The version pragma uses semantic
versioning and is denoted by [major, minor, patch] tuple. As shown above
0.4.14.
In the above version directive we used caret range to
specify the supported compilers. The caret range allows compiler greater than
the specified version and does not allow compiler greater than the left most
non-zero digit. In our definition the left most non-zero digit is 4 (0.4). So
the caret range allows compiler greater than the specified version (0.4.14) and
does not allow greater than the left most non-zero digit (0.5.0). In other
words, only compiler with version >= 0.4.14 and < 0.5.0 be allowed to
compile to compile our contract code. This version pragma directive can also
include prerelease tags such as alpha, beta. Below are examples of caret
ranges:
- ^0.4.14 := >=0.4.14 and <0.5.0
- ^1.2.3 := >=1.2.3 and <2.0.0
- ^0.2.3 := >=0.2.3 <0.3.0
- ^0.0.3 := >=0.0.3 <0.0.4
The solidity compiler can use complex rules for identifying
the correct compiler version. But this may be rarely used. Unless you want to
target a specific version range, you don’t need to go that complex.
No comments:
Post a Comment